/**
* Copyright (c) 2012 Vinayak Solutions Private Limited
* See the file license.txt for copying permission.
*/
package com.vinsol.expensetracker;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Environment;
import android.preference.PreferenceManager;
import android.widget.Toast;
import com.vinsol.expensetracker.helpers.SharedPreferencesHelper;
import com.vinsol.expensetracker.utils.Log;
import com.vinsol.expensetracker.utils.Strings;
public class ExpenseTrackerApplication extends Application {
private static Context applicationContext;
public static String FILES_DIR;
public static boolean isInitialized = false;
public static boolean toSync = false;
@Override
public void onCreate() {
super.onCreate();
applicationContext = this;
PreferenceManager.setDefaultValues(applicationContext, R.xml.preferences, false);
setSyncPrefs();
Initialize();
}
public static void setSyncPrefs() {
String token = SharedPreferencesHelper.getSharedPreferences().getString(getContext().getString(R.string.pref_key_token), "");
if(Strings.notEmpty(token)) {
toSync = true;
} else {
toSync = false;
}
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(applicationContext);
Log.d(preferences.getString(applicationContext.getString(R.string.pref_key_token), "not found"));
Log.d("******************************* Syncing syncing syncing **************************"+ExpenseTrackerApplication.toSync+" token "+token+" key "+applicationContext.getString(R.string.pref_key_token));
}
public static void Initialize() {
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
FILES_DIR = applicationContext.getExternalFilesDir(null).toString();
if(FILES_DIR != null) {
Constants.DIRECTORY = FILES_DIR + Constants.ET_FOLDER;
File mFile = new File(Constants.DIRECTORY + Constants.DIRECTORY_AUDIO);
mFile.mkdirs();
mFile = new File(Constants.DIRECTORY + Constants.DIRECTORY_FAVORITE + Constants.DIRECTORY_AUDIO);
mFile.mkdirs();
if(!SharedPreferencesHelper.getSharedPreferences().contains(applicationContext.getString(R.string.pref_key_run_first_time))) {
File prevVerDir = new File(Environment.getExternalStorageDirectory()+"/ExpenseTracker");
if(prevVerDir.exists()) {
try {
copyDirectory(prevVerDir, new File(FILES_DIR+"/ExpenseTracker"));
} catch (IOException e) {
e.printStackTrace();
}
try {
deleteDirectory(prevVerDir);
} catch (IOException e) {
e.printStackTrace();
}
}
SharedPreferencesHelper.setBooleanPrefs(R.string.pref_key_run_first_time, false);
}
isInitialized = true;
}
} else {
Toast.makeText(applicationContext, "sdcard not available", Toast.LENGTH_LONG).show();
}
}
public static Context getContext() {
return applicationContext;
}
private static void copyDirectory(File sourceLocation , File targetLocation) throws IOException {
if (sourceLocation.isDirectory()) {
if (!targetLocation.exists()) {
targetLocation.mkdir();
}
String[] children = sourceLocation.list();
for (int i=0; i<children.length; i++) {
copyDirectory(new File(sourceLocation, children[i]), new File(targetLocation, children[i]));
}
} else {
InputStream in = new FileInputStream(sourceLocation);
OutputStream out = new FileOutputStream(targetLocation);
// Copy the bits from instream to outstream
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
private static void deleteDirectory(File fileOrDirectory) throws IOException{
if (fileOrDirectory.isDirectory()) {
for (File child : fileOrDirectory.listFiles()) { deleteDirectory(child);}
}
fileOrDirectory.delete();
}
}