/*****************************************************************
* Copyright (c) 2013 by CDAC Chennai
* @File UserInfoDbHelper
* @Created: 06.06.2014
* @author: Prasenjit
* Last Change: 06.06.2014 by Prasenjit
******************************************************************/
package com.contextawareframework.dbmanager;
import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.contextawareframework.globalvariable.CAFConfig;
import com.contextawareframework.os.UserInfo;
/**
* This is a database helper class for all CRUD operation on User information.
*/
public class UserInfoDbHelper{
// Database fields
private SQLiteDatabase database;
private ContextAwareSQLiteHelper dbHelper;
private static UserInfoDbHelper userInfoDbHelper;
private static boolean enableDebugging = CAFConfig.isEnableDebugging();
private String TAG = "UserInfoDbHelper" ;
private String[] allColumns = { ContextAwareSQLiteHelper.COLUMN_USER_EMAIL,
ContextAwareSQLiteHelper.COLUMN_USER_ID, ContextAwareSQLiteHelper.COLUMN_DEV_EMAIL, ContextAwareSQLiteHelper.COLUMN_DEVICE_ID, ContextAwareSQLiteHelper.COLUMN_APP_ID
};
/**
* Default Constructor
*/
private UserInfoDbHelper(Context context) {
dbHelper = new ContextAwareSQLiteHelper(context);
}
public static synchronized UserInfoDbHelper getInstance(Context context)
{
if (userInfoDbHelper == null)
userInfoDbHelper = new UserInfoDbHelper(context);
return userInfoDbHelper;
}
/**
* Method to enable debugging
* @param boolean
*/
public void setEnableDebugging(boolean value)
{
enableDebugging = value;
}
/**
* Method to get the present value of enableDebugging
* @return boolean
*/
public boolean getEnableDebugging()
{
return enableDebugging;
}
/**
* Method to open the database for writing
*/
public void open() throws SQLException {
database = dbHelper.getWritableDatabase();
}
/**
* Method to open the database in read only mode
*/
public void openReadOnly()
{
try
{
database = dbHelper.getReadableDatabase();
}
catch(SQLException e)
{
e.printStackTrace();
}
}
/**
* Method to close the database connection
*/
public void close() {
dbHelper.close();
}
/**
* Method to create insert a row of data into the database
*/
public UserInfo createUserInfoRowData(String userEmail,String userId, String devEmail, String deviceId,String appId){
ContentValues values = new ContentValues();
UserInfo newRow = null;
try
{
values.put(ContextAwareSQLiteHelper.COLUMN_USER_EMAIL, userEmail);
values.put(ContextAwareSQLiteHelper.COLUMN_USER_ID,userId);
values.put(ContextAwareSQLiteHelper.COLUMN_DEV_EMAIL, devEmail);
values.put(ContextAwareSQLiteHelper.COLUMN_DEVICE_ID, deviceId);
values.put(ContextAwareSQLiteHelper.COLUMN_APP_ID, appId);
values.put(ContextAwareSQLiteHelper.COLUMN_USER_AUTH_STATUS, "false");
long insertId = database.insert(ContextAwareSQLiteHelper.TABLE_USERINFO, null,
values);
Cursor cursor = database.query(ContextAwareSQLiteHelper.TABLE_USERINFO,
allColumns, ContextAwareSQLiteHelper.COLUMN_USER_ID + " = " + insertId, null,
null, null, null);
cursor.moveToFirst();
newRow = getUserDetails(cursor);
cursor.close();
if(enableDebugging)
{
Log.d(TAG,"createUserInfoRowData Method");
}
}
catch(SQLException e)
{
e.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
return newRow;
}
/**
* Method to delete a row from database
*/
public void deleteUserInfoRowData(UserInfo userInfo) {
try{
String id = userInfo.getUserId();
System.out.println("Comment deleted with id: " + id);
database.delete(ContextAwareSQLiteHelper.TABLE_USERINFO, ContextAwareSQLiteHelper.COLUMN_USER_ID
+ " = " + id, null);
}
catch(SQLException e)
{
e.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* Method to list all row of the UserInfo table
*/
public List<UserInfo> getAllRows() {
List<UserInfo> comments = new ArrayList<UserInfo>();
try
{
Cursor cursor = database.query(ContextAwareSQLiteHelper.TABLE_USERINFO,
allColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
UserInfo userinfo = getUserDetails(cursor);
comments.add(userinfo);
cursor.moveToNext();
}
// Make sure to close the cursor
cursor.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
catch(Exception e)
{
e.printStackTrace();
}
return comments;
}
/**
* Method to intialize a UserInfo POJO object
*/
private UserInfo getUserDetails(Cursor cursor) {
UserInfo userinfo = new UserInfo();
try
{
userinfo.setUserEmailId(cursor.getString(0));
userinfo.setDeveloperEmail(cursor.getString(1));
userinfo.setDeviceId(cursor.getString(2));
userinfo.setUserId(cursor.getString(3));
userinfo.setAppId(cursor.getString(4));
userinfo.setAuthenticatedUser(false);
}
catch(Exception e)
{
e.printStackTrace();
}
return userinfo;
}
}