package com.evancharlton.mileage; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Set; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Environment; import android.os.Handler; import android.os.Message; import au.com.bytecode.opencsv.CSVWriter; public class CSVExporter implements Runnable { private Handler m_handler; public CSVExporter(Handler handler) { m_handler = handler; } public void run() { try { CSVWriter csv = new CSVWriter(new FileWriter(Environment.getExternalStorageDirectory() + "/mileage.csv")); HashMap<String, String> fillupsProjection = FillUpsProvider.getFillUpsProjection(); Set<String> keySet = fillupsProjection.keySet(); keySet.remove(FillUps._ID); String[] proj = keySet.toArray(new String[keySet.size()]); SQLiteDatabase db = SQLiteDatabase.openDatabase("/data/data/" + Mileage.PACKAGE + "/databases/" + FillUpsProvider.DATABASE_NAME, null, SQLiteDatabase.OPEN_READONLY); Cursor c = db.query(FillUpsProvider.FILLUPS_TABLE_NAME, proj, null, null, null, null, FillUps._ID + " ASC"); c.moveToFirst(); csv.writeNext(keySet.toArray(new String[keySet.size()])); while (c.isAfterLast() == false) { String[] data = new String[keySet.size()]; for (int i = 0; i < c.getColumnCount(); i++) { data[i] = c.getString(i); } csv.writeNext(data); c.moveToNext(); } c.close(); csv.close(); m_handler.post(new Runnable() { public void run() { Message msg = new Message(); msg.what = 1; msg.arg1 = R.string.export_finished_msg; msg.obj = "mileage.csv"; msg.arg2 = R.string.export_finished; m_handler.handleMessage(msg); } }); } catch (final IOException e) { e.printStackTrace(); m_handler.post(new Runnable() { public void run() { Message msg = new Message(); msg.what = 0; msg.obj = e.getMessage(); msg.arg2 = R.string.error_exporting_data; m_handler.handleMessage(msg); } }); return; } } }