package com.hexonxons.leprawatch.database;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.cookie.BasicClientCookie;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class DBManager
{
private DbOpenHelper mHelper = null;
private SQLiteDatabase mDatabase = null;
public DBManager(Context context)
{
mHelper = new DbOpenHelper(context);
mDatabase = mHelper.getWritableDatabase();
}
/**
* Save cookies to database.
* @param cookies
*/
public void saveCookies(Cookie[] cookies)
{
// Save cookies in single transaction.
mDatabase.beginTransaction();
for(Cookie cookie : cookies)
{
ContentValues values = new ContentValues();
values.put(DbOpenHelper.COOKIES_COMMENT, cookie.getComment());
values.putNull(DbOpenHelper.COOKIES_COMMENT_URL);
values.put(DbOpenHelper.COOKIES_DOMAIN, cookie.getDomain());
values.putNull(DbOpenHelper.COOKIES_EXPIRY_DATE);
values.put(DbOpenHelper.COOKIES_NAME, cookie.getName());
values.put(DbOpenHelper.COOKIES_PATH, cookie.getPath());
values.putNull(DbOpenHelper.COOKIES_PORT);
values.put(DbOpenHelper.COOKIES_VALUE, cookie.getValue());
values.put(DbOpenHelper.COOKIES_VERSION, cookie.getVersion());
values.putNull(DbOpenHelper.COOKIES_EXPIRED);
values.putNull(DbOpenHelper.COOKIES_PERSISTENT);
values.put(DbOpenHelper.COOKIES_SECURE, cookie.isSecure());
mDatabase.insert(DbOpenHelper.COOKIES_TABLE, null, values);
}
// Set transaction successful.
mDatabase.setTransactionSuccessful();
// End transaction.
mDatabase.endTransaction();
}
/**
* @return saved cookies array.
*/
public BasicClientCookie[] getCookies()
{
Cursor cursor = mDatabase.query(DbOpenHelper.COOKIES_TABLE, null, null, null, null, null, null);
// No cookies or error happens.
if(cursor.getColumnIndex(DbOpenHelper.COOKIES_NAME) == -1 || cursor.isAfterLast())
{
cursor.close();
return null;
}
cursor.moveToFirst();
BasicClientCookie[] cookies = new BasicClientCookie[cursor.getCount()];
int index = 0;
while(!cursor.isAfterLast())
{
BasicClientCookie cookie = new BasicClientCookie(
cursor.getString(cursor.getColumnIndex(DbOpenHelper.COOKIES_NAME)),
cursor.getString(cursor.getColumnIndex(DbOpenHelper.COOKIES_VALUE)));
cookie.setComment(cursor.getString(cursor.getColumnIndex(DbOpenHelper.COOKIES_COMMENT)));
cookie.setDomain(cursor.getString(cursor.getColumnIndex(DbOpenHelper.COOKIES_DOMAIN)));
cookie.setPath(cursor.getString(cursor.getColumnIndex(DbOpenHelper.COOKIES_PATH)));
cookie.setVersion(cursor.getInt(cursor.getColumnIndex(DbOpenHelper.COOKIES_VERSION)));
cookie.setSecure(cursor.getInt(cursor.getColumnIndex(DbOpenHelper.COOKIES_SECURE)) == 0 ? false : true);
cookies[index++] = cookie;
cursor.moveToNext();
}
cursor.close();
return cookies;
}
}