package com.evancharlton.mileage.io.output;
import java.io.FileWriter;
import java.io.IOException;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Environment;
import android.os.Message;
import android.widget.TextView;
import au.com.bytecode.opencsv.CSVWriter;
import com.evancharlton.mileage.FillUpsProvider;
import com.evancharlton.mileage.Mileage;
import com.evancharlton.mileage.R;
import com.evancharlton.mileage.calculators.CalculationEngine;
import com.evancharlton.mileage.models.FillUp;
public class CSVView extends ExportView {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, "csv");
m_title = (TextView) findViewById(R.id.title);
m_title.setText(R.string.csv_file);
super.m_exporter = new Runnable() {
public void run() {
try {
CSVWriter csv = new CSVWriter(new FileWriter(Environment.getExternalStorageDirectory() + "/" + getFilename()));
// write out the column headers
String[] columns = FillUp.getCSVColumns();
csv.writeNext(columns);
// load all the fill-ups
SQLiteDatabase db = SQLiteDatabase.openDatabase("/data/data/" + Mileage.PACKAGE + "/databases/" + FillUpsProvider.DATABASE_NAME, null, SQLiteDatabase.OPEN_READONLY);
Cursor c = db.query(FillUpsProvider.FILLUPS_TABLE_NAME, FillUp.getProjection(), null, null, null, null, FillUp.DEFAULT_SORT_ORDER);
c.moveToFirst();
while (!c.isAfterLast()) {
FillUp f = new FillUp((CalculationEngine) null, c);
// write each fill-up
csv.writeNext(f.toCSV(columns));
c.moveToNext();
}
c.close();
db.close();
csv.close();
m_handler.post(new Runnable() {
public void run() {
Bundle data = new Bundle();
data.putString(MESSAGE, getString(R.string.export_finished_msg) + "\n" + getFilename());
data.putString(TITLE, getString(R.string.success));
data.putBoolean(SUCCESS, true);
Message msg = new Message();
msg.setData(data);
m_handler.handleMessage(msg);
}
});
} catch (final IOException e) {
e.printStackTrace();
m_handler.post(new Runnable() {
public void run() {
Bundle data = new Bundle();
data.putString(MESSAGE, e.getMessage());
data.putString(TITLE, getString(R.string.error));
data.putBoolean(SUCCESS, false);
Message msg = new Message();
msg.setData(data);
m_handler.handleMessage(msg);
}
});
return;
}
}
};
}
@Override
protected String getHelp() {
return getString(R.string.help_export_csv);
}
@Override
protected String getHelpTitle() {
return getString(R.string.help_export_csv_title);
}
}