package greendrm.editor; import java.util.ArrayList; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class EditorFileDatabase extends SQLiteOpenHelper implements IEditorFile { private final static boolean DEBUG = true; private final static String TAG = "EditorFileDatabase"; static Context CONTEXT = null; static String DATABASE_NAME = "editor.db"; private static String DATABASE_TABLE = "test_db"; static int DATABASE_VERSION = 1; public EditorFileDatabase() { super(CONTEXT, DATABASE_NAME, null, DATABASE_VERSION); } public EditorFileDatabase(Context context, String database_name, int database_version) { super(context, database_name, null, database_version); CONTEXT = context; DATABASE_NAME = database_name; DATABASE_VERSION = database_version; } @Override public void onCreate(SQLiteDatabase db) { if (DEBUG) Log.d(TAG, "onCreate"); db.execSQL("CREATE TABLE " + DATABASE_TABLE + "(" + "_id INTEGER PRIMARY KEY," + "filename VARCHAR, " + "data TEXT);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (DEBUG) Log.d(TAG, "onUpgrade"); db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); onCreate(db); } public void setBaseDir(String dir) { if (DEBUG) Log.d(TAG, "setBaseDir"); DATABASE_NAME = dir; } public String getBaseDir() { if (DEBUG) Log.d(TAG, "getBaseDir"); return DATABASE_NAME; } public void mkDir(String filename) { if (DEBUG) Log.d(TAG, "mkDir"); DATABASE_NAME = filename; SQLiteDatabase db = getReadableDatabase(); onCreate(db); } public void createFile(String filename) { // } public void deleteFile(String filename) { if (DEBUG) Log.d(TAG, "deleteFile"); if (filename == null) return; SQLiteDatabase db = getReadableDatabase(); String deleteMe = "DELETE FROM " + DATABASE_TABLE; db.execSQL(deleteMe + " WHERE " + "filename=" + "'" + filename + "'"); } public void saveFile(String filename, String data) { if (DEBUG) Log.d(TAG, "saveFile"); if (filename == null) return; SQLiteDatabase db = getWritableDatabase(); String insertMe = "INSERT INTO " + DATABASE_TABLE + "(filename, data) " + "VALUES "; db.execSQL(insertMe + "('" + filename + "'," + "'" + data + "'" + ");"); } public String loadFile(String filename) { if (DEBUG) Log.d(TAG, "loadFile"); if (filename == null) return null; String data = null; SQLiteDatabase db = getReadableDatabase(); Cursor c = db.query(DATABASE_TABLE, new String[] {"_id", "filename", "data"}, null, null, null, null, null); try { //int idColumn = c.getColumnIndex("_id"); int filenameColumn = c.getColumnIndex("filename"); int dataColumn = c.getColumnIndex("data"); int i = 0; if (c.moveToFirst()) { do { i++; //int id = c.getInt(idColumn); String _filename = c.getString(filenameColumn); data = c.getString(dataColumn); if (_filename.equals(filename)) break; } while (c.moveToNext()); } } finally { if (c != null) c.close(); } return data; } public String parseFileName(String fullPath) { if (DEBUG) Log.d(TAG, "parseFileName"); String[] tmps = fullPath.split("\\/"); return tmps[tmps.length-1]; } public String parseFileNameNoExt(String filename) { if (DEBUG) Log.d(TAG, "parseFileNameNoExt"); if (filename != null) { String[] tmps = filename.split("\\."); return tmps[0]; } return null; } public ArrayList<String> retreiveFiles(ArrayList<String> items) { if (DEBUG) Log.d(TAG, "retreiveFiles"); SQLiteDatabase db = getReadableDatabase(); Cursor c = db.query(DATABASE_TABLE, new String[] {"_id", "filename", "data"}, null, null, null, null, null); items.clear(); try { //int idColumn = c.getColumnIndex("_id"); int filenameColumn = c.getColumnIndex("filename"); //int dataColumn = c.getColumnIndex("data"); int i = 0; if (c.moveToFirst()) { do { i++; //int id = c.getInt(idColumn); String _filename = c.getString(filenameColumn); //String data = c.getString(dataColumn); items.add(_filename); } while (c.moveToNext()); } } finally { if (c != null) c.close(); } return items; } }