package com.devsmart.android;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import android.content.ContentValues;
import android.content.Context;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.database.sqlite.SQLiteStatement;
import android.net.Uri;
import android.util.Log;
public class DbUtils {
public static String getStringCursorValue(Cursor cursor, String columnName, String defaultValue) {
String retval = null;
int columnNum = cursor.getColumnIndex(columnName);
if(columnNum == -1){
retval = defaultValue;
} else {
retval = cursor.getString(columnNum);
}
return retval;
}
public static Long getLongCursorValue(Cursor cursor, String columnName, Long defaultValue){
Long retval = defaultValue;
int columnNum = cursor.getColumnIndex(columnName);
if(columnNum == -1){
retval = defaultValue;
} else {
retval = cursor.getLong(columnNum);
}
return retval;
}
public static Integer getIntCursorValue(Cursor cursor, String columnName, Integer defaultvalue) {
Integer retval = defaultvalue;
int columnNum = cursor.getColumnIndex(columnName);
if(columnNum == -1){
retval = defaultvalue;
} else {
retval = cursor.getInt(columnNum);
}
return retval;
}
public static String lookupSingleStringValue(Context context, Uri uri, String columnName, String defaultValue) {
String retval = defaultValue;
Cursor cursor = context.getContentResolver().query(uri, new String[]{columnName}, null, null, null);
try {
if(cursor.moveToFirst()){
retval = cursor.getString(0);
}
} finally {
cursor.close();
}
return retval;
}
public static String lookupSingleStringValue(SQLiteDatabase db, String columnName, String table, String selection, String[] selectionArgs, String defaultValue) {
String retval = defaultValue;
Cursor c = db.query(table, new String[]{columnName}, selection, selectionArgs, null, null, null);
try {
if(c.moveToFirst()){
retval = c.getString(0);
}
} finally {
c.close();
}
return retval;
}
public static void executeAssetSQL(SQLiteDatabase db, Resources resources, String assetPath){
db.beginTransaction();
try {
String createSQL = StringUtils.loadAssetString(resources, assetPath);
for(String sql : createSQL.split("\\?")){
sql = sql.trim();
if(!StringUtils.isEmptyString(sql)){
db.execSQL(sql);
}
}
db.setTransactionSuccessful();
} catch (IOException e) {
Log.e(DbUtils.class.getName(), "Error executing sql statement", e);
} finally {
db.endTransaction();
}
}
public static long updateOrInsert(SQLiteDatabase db, String table, ContentValues values, String selection, String[] selectionArgs) {
long retval = -1;
db.beginTransaction();
try {
retval = db.update(table, values, selection, selectionArgs);
if(retval == 0){
retval = db.insert(table, null, values);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
return retval;
}
/*
public static long updateOrReplaceRow(SQLiteDatabase db, ContentValues values, String table, String selection, String[] selectionArgs) {
String query = "UPDATE OR REPLACE %s SET ";
Iterator<Entry<String, Object>> it = values.valueSet().iterator();
while(it.hasNext()){
Entry<String, Object> entry = it.next();
query += String.format("%s = '%s'", entry.getKey(), entry.getValue().toString());
if(it.hasNext()){
query += ", ";
}
}
query += " WHERE";
selection.rep
String.format(selection, selectionArgs));
}
*/
}