import net.ktnx.mobileledger.async.DescriptionSelectedCallback;
import net.ktnx.mobileledger.model.Data;
+import net.ktnx.mobileledger.model.MobileLedgerProfile;
import org.jetbrains.annotations.NonNls;
final AutoCompleteTextView view,
final String table, final String field,
final boolean profileSpecific) {
- hookAutocompletionAdapter(context, view, table, field, profileSpecific, null, null);
+ hookAutocompletionAdapter(context, view, table, field, profileSpecific, null, null, Data.profile.get());
}
@TargetApi(Build.VERSION_CODES.N)
public static void hookAutocompletionAdapter(final Context context,
final AutoCompleteTextView view,
final String table, final String field,
final boolean profileSpecific, final View nextView,
- final DescriptionSelectedCallback callback) {
+ final DescriptionSelectedCallback callback,
+ final MobileLedgerProfile profile) {
String[] from = {field};
int[] to = {android.R.id.text1};
SimpleCursorAdapter adapter =
"FROM %s " +
"WHERE profile=? AND %s_upper LIKE '%%'||?||'%%' " +
"ORDER BY 2, 1;", field, field, field, field, table, field);
- params = new String[]{str, str, str, Data.profile.get().getUuid(), str};
+ params = new String[]{str, str, str, profile.getUuid(), str};
}
else {
sql = String.format("SELECT %s as a, case when %s_upper LIKE ?||'%%' then 1 " +
}
public static synchronized void init(Application context) {
MLDB.context = context;
- if (dbHelper != null) throw new IllegalStateException("It appears init() was already called");
+ if (dbHelper != null)
+ throw new IllegalStateException("It appears init() was already called");
dbHelper = new MobileLedgerDatabase(context);
}
public static synchronized void done() {
class MobileLedgerDatabase extends SQLiteOpenHelper implements AutoCloseable {
private static final String DB_NAME = "MoLe.db";
- private static final int LATEST_REVISION = 20;
+ private static final int LATEST_REVISION = 22;
+ private static final String CREATE_DB_SQL = "create_db";
private final Application mContext;
@Override
public void onCreate(SQLiteDatabase db) {
Log.d("db", "onCreate called");
- onUpgrade(db, -1, LATEST_REVISION);
+ applyRevisionFile(db, CREATE_DB_SQL);
}
@Override
}
private void applyRevision(SQLiteDatabase db, int rev_no) {
- final Resources rm = mContext.getResources();
String rev_file = String.format(Locale.US, "sql_%d", rev_no);
+ applyRevisionFile(db, rev_file);
+ }
+ private void applyRevisionFile(SQLiteDatabase db, String rev_file) {
+ final Resources rm = mContext.getResources();
int res_id = rm.getIdentifier(rev_file, "raw", mContext.getPackageName());
if (res_id == 0)
- throw new SQLException(String.format(Locale.US, "No resource for revision %d", rev_no));
+ throw new SQLException(String.format(Locale.US, "No resource for %s", rev_file));
db.beginTransaction();
try (InputStream res = rm.openRawResource(res_id)) {
- Log.d("db", "Applying revision " + String.valueOf(rev_no));
+ Log.d("db", "Applying " + rev_file);
InputStreamReader isr = new InputStreamReader(res);
BufferedReader reader = new BufferedReader(isr);
}
catch (Exception e) {
throw new RuntimeException(
- String.format("Error applying revision %d, line %d", rev_no, line_no),
- e);
+ String.format("Error applying %s, line %d", rev_file, line_no), e);
}
line_no++;
}
db.setTransactionSuccessful();
}
catch (IOException e) {
- Log.e("db", String.format("Error opening raw resource for revision %d", rev_no));
+ Log.e("db", String.format("Error opening raw resource for %s", rev_file));
e.printStackTrace();
}
finally {