package com.evancharlton.mileage.io.input;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Set;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.os.Message;
import android.widget.TextView;
import com.evancharlton.mileage.FillUpsProvider;
import com.evancharlton.mileage.Mileage;
import com.evancharlton.mileage.R;
import com.evancharlton.mileage.models.FillUp;
public class SQLView extends ImportView {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState, "sql");
m_title = (TextView) findViewById(R.id.title);
m_title.setText(getString(R.string.sql_file));
m_importer = new Runnable() {
public void run() {
final String filename = getInput();
File input = new File(filename);
try {
BufferedReader in = new BufferedReader(new FileReader(input));
HashMap<String, String> fillupsProjection = FillUpsProvider.getFillUpsProjection();
Set<String> keySet = fillupsProjection.keySet();
keySet.remove(FillUp._ID);
SQLiteDatabase db = SQLiteDatabase.openDatabase("/data/data/" + Mileage.PACKAGE + "/databases/" + FillUpsProvider.DATABASE_NAME, null, SQLiteDatabase.OPEN_READWRITE);
String line;
while ((line = in.readLine()) != null) {
if (line.startsWith("--")) {
continue;
}
line = line.trim();
if (line.endsWith("\\")) {
line += "\n" + in.readLine();
}
db.execSQL(line);
}
db.close();
in.close();
m_handler.post(new Runnable() {
public void run() {
Bundle data = new Bundle();
data.putString(MESSAGE, getString(R.string.import_done_msg) + "\n" + filename);
data.putBoolean(SUCCESS, true);
Message msg = new Message();
msg.setData(data);
m_handler.handleMessage(msg);
}
});
} catch (final FileNotFoundException e) {
m_handler.post(new Runnable() {
public void run() {
Bundle data = new Bundle();
data.putString(MESSAGE, e.getMessage());
data.putBoolean(SUCCESS, false);
Message msg = new Message();
msg.setData(data);
m_handler.handleMessage(msg);
}
});
} catch (final IOException e) {
m_handler.post(new Runnable() {
public void run() {
Bundle data = new Bundle();
data.putString(MESSAGE, e.getMessage());
data.putBoolean(SUCCESS, false);
Message msg = new Message();
msg.setData(data);
m_handler.handleMessage(msg);
}
});
}
}
};
}
@Override
protected String getHelp() {
return getString(R.string.help_import_sql);
}
@Override
protected String getHelpTitle() {
return getString(R.string.help_import_sql_title);
}
}