package com.openims.model.pushService;
import com.openims.utility.LogUtil;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class PushInfoManager{
private static final String LOGTAG = LogUtil.makeLogTag(PushInfoManager.class);
private static final String TAG = LogUtil.makeTag(PushInfoManager.class);
private static final String DATABASE_NAME = "pushRegInfo.db";
private static final int DATABASE_VERSION = 2;
private static final String TABLE_NAME = "pushRegInfo";
private static final String USER = "user";
private static final String DEVELOPER = "developer";
private static final String PUSH_NAME_KEY = "pushNameKey";
private static final String PUSHID = "pushID";
private static final String REC_PACKAGENAME = "packageName";
private static final String REC_CLASSNAME = "className";
private static final String TYPE = "type";
private static final String FLAG = "flag";
private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+"("+
USER+" text not null," +
DEVELOPER + " text not null, " +
PUSHID+" text," +
PUSH_NAME_KEY+" text not null,"+
REC_PACKAGENAME+" text not null,"+
REC_CLASSNAME+" text not null,"+
TYPE+" text,"+
FLAG+" text "+ ");";
private static DatabaseHelper databaseHelper;
public PushInfoManager(Context context){
databaseHelper = new DatabaseHelper(context);
}
public void close(){
if(databaseHelper != null){
databaseHelper.close();
}
}
public boolean insertPushInfotoDb(String user,
String developer,
String pushName,
String packageName,
String className){
SQLiteDatabase db = databaseHelper.getWritableDatabase();
String sql = "insert into " + TABLE_NAME + " ("+
USER +","+ DEVELOPER +","+ PUSH_NAME_KEY +","+REC_PACKAGENAME+","+REC_CLASSNAME+
") values('" +
user+"','"+
developer+"','"+
pushName+ "','"+
packageName+ "','"+
className+ "'"+
");";
Log.d(LOGTAG,TAG+sql);
try {
db.execSQL(sql);
} catch (SQLException e) {
e.printStackTrace();
Log.d(LOGTAG,TAG+"execSQL error:"+e.getMessage());
return false;
}
return true;
}
public boolean getPushInfo(String pushID,StringBuilder packageName,StringBuilder className){
SQLiteDatabase db = databaseHelper.getReadableDatabase();
String where =PUSHID + "='"+pushID+"'";
String col[]={REC_PACKAGENAME,REC_CLASSNAME};
Cursor cursor = db.query(TABLE_NAME, col, where, null, null, null, null);
int n = cursor.getCount();
cursor.moveToFirst();
String packageN = cursor.getString(0);
String classN = cursor.getString(1);
if(packageN != null && n==1){
packageName.append(packageN);
className.append(classN);
return true;
}else{
Log.e(LOGTAG,TAG+"getPushInfo error");
return false;
}
}
public boolean updatePushID(String pushName,String user,String pushID){
SQLiteDatabase db = databaseHelper.getWritableDatabase();
String where = PUSH_NAME_KEY + "='"+pushName+"' AND " + USER + "='" + user + "'";
ContentValues values = new ContentValues();
values.put(PUSHID, pushID);
int n = db.update(TABLE_NAME, values, where, null);
if(n != 1){
Log.e(LOGTAG,TAG+"updatePushID error");
return false;
}else
return true;
}
public boolean deletePushInfoInDb(String pushName,String user){
SQLiteDatabase db = databaseHelper.getWritableDatabase();
String where = PUSH_NAME_KEY + "='"+pushName+"' AND " + USER + "='" + user + "'";
int n = db.delete(TABLE_NAME, where,null);
if(n == 1){
Log.d(LOGTAG,TAG+"Del push inf succuss where pushName:"+pushName);
return true;
}
Log.e(LOGTAG,TAG+"delete Push Inf fail where pushName=='"+pushName+"'");
return false;
}
public boolean isRegPush(String pushName,String user){
SQLiteDatabase db = databaseHelper.getWritableDatabase();
String col[]={PUSHID};
String where = PUSH_NAME_KEY + "='"+pushName+"' AND " + USER + "='" + user + "'";
Cursor cursor = db.query(TABLE_NAME, col, where, null, null, null, null);
int n = cursor.getCount();
cursor.moveToFirst();
if(n==1){
String pushId = cursor.getString(0);
if(pushId != null){
return true;
}
}
db.delete(TABLE_NAME, where, null);
Log.i(LOGTAG,TAG+"delete " + where);
return false;
}
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(LOGTAG,TAG+"onCreate table:" + CREATE_TABLE);
try {
db.execSQL(CREATE_TABLE);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
db.execSQL(CREATE_TABLE);
Log.d(LOGTAG,TAG+"Recreat table success");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private void reCreateTable() {
Log.d(LOGTAG,TAG+"CreateTable");
SQLiteDatabase db = databaseHelper.getWritableDatabase();
try {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
db.execSQL(CREATE_TABLE);
Log.d(LOGTAG,TAG+"Recreat table success");
} catch (SQLException e) {
Log.e(LOGTAG,TAG+"Recreat table failure");
}
}
}