package org.kroz.activerecord;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
/**
* Internal framework class. Utilize DatabaseBuilder to produce DDL statements
* directly out of Java classes.
*
* @author Vladimir Kroz
* @author JEREMYOT
*
* <p>This project based on and inspired by 'androidactiverecord' project written by JEREMYOT</p>
*/
class DatabaseOpenHelper extends SQLiteOpenHelper {
DatabaseBuilder _builder;
int _version;
/**
* Constructor
*
* @param ctx
* @param dbPath
* @param dbVersion
* @param builder
*/
public DatabaseOpenHelper(Context ctx, String dbPath, int dbVersion,
DatabaseBuilder builder) {
super(ctx, dbPath, null, dbVersion);
_builder = builder;
_version = dbVersion;
}
@Override
public void onCreate(SQLiteDatabase db) {
for (String table : _builder.getTables()) {
String sqlStr = null;
try {
sqlStr = _builder.getSQLCreate(table);
} catch (ActiveRecordException e) {
Log.e(this.getClass().getName(), e.getMessage(), e);
}
if (sqlStr != null)
db.execSQL(sqlStr);
}
db.setVersion(_version);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
for (String table : _builder.getTables()) {
String sqlStr = _builder.getSQLDrop(table);
db.execSQL(sqlStr);
}
onCreate(db);
}
}