package com.pinthecloud.athere.database;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.pinthecloud.athere.exception.AhException;
import com.pinthecloud.athere.model.AhMessage;
public class MessageDBHelper extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static int DATABASE_VERSION = 2;
// static{
// Random r= new Random();
// DATABASE_VERSION = r.nextInt(10) + 1;
// }
// Database Name
private static final String DATABASE_NAME = "messageReceivedDB";
// Messages table name
private static final String TABLE_NAME = "messages";
// Messages Table Columns names
private final String ID = "id";
private final String TYPE = "type";
private final String CONTENT = "content";
private final String SENDER = "sender";
private final String SENDER_ID = "senderId";
private final String RECEIVER = "receiver";
private final String RECEIVER_ID = "receiverId";
private final String TIME_STAMP = "timestamp";
private final String CHUPA_COMMUN_ID = "chupaCommunId";
private final String STATUS = "status";
private BadgeDBHelper badgeDBHelper;
private SQLiteDatabase mDb;
private AtomicInteger mCount = new AtomicInteger();
public MessageDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
badgeDBHelper = new BadgeDBHelper(context);
}
private synchronized SQLiteDatabase openDataBase(String name) {
if (mCount.incrementAndGet() == 1) {
mDb = this.getWritableDatabase();
}
return mDb;
}
private synchronized void closeDatabase(String name) {
if (mCount.decrementAndGet() == 0) {
mDb.close();
}
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_NAME +
"("
+ ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ TYPE + " TEXT,"
+ CONTENT + " TEXT,"
+ SENDER + " TEXT,"
+ SENDER_ID + " TEXT,"
+ RECEIVER + " TEXT,"
+ RECEIVER_ID + " TEXT,"
+ TIME_STAMP + " TEXT,"
+ CHUPA_COMMUN_ID + " TEXT,"
+ STATUS + " INTEGER"
+")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
// Create tables again
onCreate(db);
}
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
// Create tables again
onCreate(db);
}
public void dropTable() {
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
}
/**
* All CRUD(Create, Read, Update, Delete) Operations
*/
private void putValueWithoutNull(ContentValues values, String id, String value){
if (value == null) value = "";
values.put(id, value);
}
public int addMessage(AhMessage message) {
SQLiteDatabase db = this.openDataBase("addMessage");
ContentValues values = new ContentValues();
putValueWithoutNull(values, TYPE, message.getType());
putValueWithoutNull(values, CONTENT, message.getContent());
putValueWithoutNull(values, SENDER, message.getSender());
putValueWithoutNull(values, SENDER_ID, message.getSenderId());
putValueWithoutNull(values, RECEIVER, message.getReceiver());
putValueWithoutNull(values, RECEIVER_ID, message.getReceiverId());
putValueWithoutNull(values, TIME_STAMP, message.getTimeStamp());
putValueWithoutNull(values, CHUPA_COMMUN_ID, message.getChupaCommunId());
values.put(STATUS, message.getStatus());
if (db == null) throw new AhException("db null in addMessage");
long id = db.insert(TABLE_NAME, null, values);
this.closeDatabase("addMessage");
return (int)id;
}
public void updateMessages(AhMessage message) {
SQLiteDatabase db = this.openDataBase("updateMessages");
ContentValues values = new ContentValues();
putValueWithoutNull(values, TYPE, message.getType());
putValueWithoutNull(values, CONTENT, message.getContent());
putValueWithoutNull(values, SENDER, message.getSender());
putValueWithoutNull(values, SENDER_ID, message.getSenderId());
putValueWithoutNull(values, RECEIVER, message.getReceiver());
putValueWithoutNull(values, RECEIVER_ID, message.getReceiverId());
putValueWithoutNull(values, TIME_STAMP, message.getTimeStamp());
putValueWithoutNull(values, CHUPA_COMMUN_ID, message.getChupaCommunId());
values.put(STATUS, message.getStatus());
db.update(TABLE_NAME, values, ID + " = ?", new String[]{ message.getId() });
this.closeDatabase("updateMessages");
}
public AhMessage getMessage(int id) {
SQLiteDatabase db = this.openDataBase("getMessage");
Cursor cursor = db.query(TABLE_NAME, null, ID + " = ?",
new String[] { String.valueOf(id) }, null, null, null, null);
AhMessage message = null;
if (cursor != null && cursor.moveToFirst()){
message = convertToMessage(cursor);
}
this.closeDatabase("getMessage");
return message;
}
public List<AhMessage> getAllMessages() {
List<AhMessage> messages = new ArrayList<AhMessage>();
String selectQuery = "SELECT * FROM " + TABLE_NAME + " ORDER BY " + TIME_STAMP;
SQLiteDatabase db = this.openDataBase("getAllMessages()");
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor != null && cursor.moveToFirst()) {
do {
messages.add(convertToMessage(cursor));
} while (cursor.moveToNext());
}
this.closeDatabase("getAllMessages()");
return messages;
}
public List<AhMessage> getAllMessages(String type) {
List<AhMessage> messages = new ArrayList<AhMessage>();
String selectQuery = "SELECT * FROM " + TABLE_NAME +
" WHERE " + TYPE + " = ?" +
" ORDER BY " + TIME_STAMP;
SQLiteDatabase db = this.openDataBase("getAllMessages(String type)");
Cursor cursor = db.rawQuery(selectQuery, new String[]{ type });
if (cursor != null && cursor.moveToFirst()) {
do {
messages.add(convertToMessage(cursor));
} while (cursor.moveToNext());
}
this.closeDatabase("getAllMessages(String type)");
return messages;
}
// public List<AhMessage> getAllMessagesByFifties(int offset, String type) {
// List<AhMessage> messages = new ArrayList<AhMessage>();
//
// SQLiteDatabase db = this.getReadableDatabase();
//
// String countQuery = "SELECT COUNT(*) FROM "+TABLE_NAME+ " WHERE " + TYPE + " = ?";
// Cursor countCursor = db.rawQuery(countQuery, new String[] { type });
// int total = 0;
// if (countCursor!= null){
// if(countCursor.moveToFirst()){
// total = countCursor.getInt(0);
// }
// }
//
// // Select All Query
// String selectQuery = "SELECT * FROM " + TABLE_NAME + " WHERE " + TYPE
// + " = ?" + " ORDER BY " + ID + " LIMIT 10 OFFSET "
// + (total - ((offset+1) * 10));
//
// Cursor cursor = db.rawQuery(selectQuery, new String[] { type });
//
// // looping through all rows and adding to list
// if (cursor.moveToFirst()) {
// do {
// messages.add(convertToMessage(cursor));
// } while (cursor.moveToNext());
// }
// db.close();
// // return contact list
// return messages;
// }
//
// public List<AhMessage> getAllMessagesByFifties(int offset, String... types) {
// List<AhMessage> messages = new ArrayList<AhMessage>();
//
// for(String type : types){
// messages.addAll(this.getAllMessagesByFifties(offset, type));
// }
// sortMessages(messages);
// return messages;
// }
//
// public List<AhMessage> getAllMessagesByFifties(int offset, AhMessage.TYPE... types) {
// List<AhMessage> messages = new ArrayList<AhMessage>();
//
// for(AhMessage.TYPE type : types){
// messages.addAll(this.getAllMessagesByFifties(offset, type.toString()));
// }
// sortMessages(messages);
// return messages;
// }
public List<AhMessage> getAllMessages(String... types) {
// List<AhMessage> messages = new ArrayList<AhMessage>();
//
// for(String type : types){
// messages.addAll(this.getAllMessages(type));
// }
// sortMessages(messages);
// return messages;
List<String> typeArr = new ArrayList<String>();
StringBuilder whereStr = new StringBuilder();
for (String type : types) {
typeArr.add(type);
whereStr.append(TYPE + "=? OR ");
}
whereStr.delete(whereStr.length()- 3, whereStr.length());
List<AhMessage> messages = new ArrayList<AhMessage>();
String selectQuery = "SELECT * FROM " + TABLE_NAME +
" WHERE " + whereStr.toString() +
" ORDER BY " + TIME_STAMP;
SQLiteDatabase db = this.openDataBase("getAllMessages(String... type)");
String[] argArray = typeArr.toArray(new String[typeArr.size()]);
Cursor cursor = db.rawQuery(selectQuery, argArray);
if (cursor != null && cursor.moveToFirst()) {
do {
messages.add(convertToMessage(cursor));
} while (cursor.moveToNext());
}
this.closeDatabase("getAllMessages(String... type)");
return messages;
}
public AhMessage getLastMessage(AhMessage.TYPE type) {
String selectQuery = "SELECT * FROM " + TABLE_NAME +
" WHERE " + TYPE + " = ?" +
" ORDER BY " + TIME_STAMP + " DESC LIMIT 1";
SQLiteDatabase db = this.openDataBase("getLastMessage(AhMessage.TYPE type)");
Cursor cursor = db.rawQuery(selectQuery, new String[]{ type.toString() });
AhMessage message = null;
if (cursor != null && cursor.moveToFirst()) {
message = convertToMessage(cursor);
}
this.closeDatabase("getLastMessage(AhMessage.TYPE type)");
return message;
}
public AhMessage getLastMessage(AhMessage.TYPE... types) {
List<String> typeArr = new ArrayList<String>();
StringBuilder whereStr = new StringBuilder();
for (AhMessage.TYPE type : types) {
typeArr.add(type.toString());
whereStr.append(TYPE + "=? OR ");
}
whereStr.delete(whereStr.length()- 3, whereStr.length());
String selectQuery = "SELECT * FROM " + TABLE_NAME +
" WHERE " + whereStr.toString() +
" ORDER BY " + TIME_STAMP + " DESC LIMIT 1";
SQLiteDatabase db = this.openDataBase("getLastMessage(AhMessage.TYPE... types)");
String[] argArray = typeArr.toArray(new String[typeArr.size()]);
Cursor cursor = db.rawQuery(selectQuery, argArray);
AhMessage message = null;
if (cursor != null && cursor.moveToFirst()) {
message = convertToMessage(cursor);
}
this.closeDatabase("getLastMessage(AhMessage.TYPE... types)");
return message;
}
public List<AhMessage> getAllMessages(AhMessage.TYPE... types) {
List<String> typeArr = new ArrayList<String>();
StringBuilder whereStr = new StringBuilder();
for (AhMessage.TYPE type : types) {
typeArr.add(type.toString());
whereStr.append(TYPE + "=? OR ");
}
whereStr.delete(whereStr.length()- 3, whereStr.length());
List<AhMessage> messages = new ArrayList<AhMessage>();
String selectQuery = "SELECT * FROM " + TABLE_NAME +
" WHERE " + whereStr.toString() +
" ORDER BY " + TIME_STAMP;
SQLiteDatabase db = this.openDataBase("getAllMessages(AhMessage.TYPE... types)");
String[] argArray = typeArr.toArray(new String[typeArr.size()]);
Cursor cursor = db.rawQuery(selectQuery, argArray);
if (cursor != null && cursor.moveToFirst()) {
do {
messages.add(convertToMessage(cursor));
} while (cursor.moveToNext());
}
this.closeDatabase("getAllMessages(AhMessage.TYPE... types)");
return messages;
}
public List<AhMessage> getAllMessages(AhMessage.TYPE type) {
return this.getAllMessages(type.toString());
}
public boolean isEmpty() {
String selectQuery = "SELECT COUNT(*) FROM " + TABLE_NAME;
SQLiteDatabase db = this.openDataBase("getAllMessages(AhMessage.TYPE type)");
Cursor cursor = db.rawQuery(selectQuery, null);
int count = 0;
if(cursor != null && cursor.moveToFirst()){
count = cursor.getInt(0);
}
this.closeDatabase("getAllMessages(AhMessage.TYPE type)");
return count == 0;
}
public boolean isEmpty(String type) {
String selectQuery = "SELECT COUNT(*) FROM " + TABLE_NAME + " WHERE " + TYPE + " = ?";
SQLiteDatabase db = this.openDataBase("isEmpty(String type)");
Cursor cursor = db.rawQuery(selectQuery, new String[]{ type });
int count = 0;
if(cursor != null && cursor.moveToFirst()){
count = cursor.getInt(0);
}
this.closeDatabase("isEmpty(String type)");
return count == 0;
}
public boolean isEmpty(String... types) {
List<String> typeArr = new ArrayList<String>();
StringBuilder whereStr = new StringBuilder();
for (String type : types) {
typeArr.add(type);
whereStr.append(TYPE + "=? OR ");
}
whereStr.delete(whereStr.length()- 3, whereStr.length());
String selectQuery = "SELECT COUNT(*) FROM " + TABLE_NAME + " WHERE " + whereStr.toString();
String[] argArray = typeArr.toArray(new String[typeArr.size()]);
SQLiteDatabase db = this.openDataBase("isEmpty(String... types)");
Cursor cursor = db.rawQuery(selectQuery, argArray);
int count = 0;
if(cursor != null && cursor.moveToFirst()){
count = cursor.getInt(0);
}
this.closeDatabase("isEmpty(String... types)");
return count == 0;
}
public boolean isEmpty(AhMessage.TYPE... types) {
List<String> typeArr = new ArrayList<String>();
StringBuilder whereStr = new StringBuilder();
for (AhMessage.TYPE type : types) {
typeArr.add(type.toString());
whereStr.append(TYPE + "=? OR ");
}
whereStr.delete(whereStr.length()- 3, whereStr.length());
String selectQuery = "SELECT COUNT(*) FROM " + TABLE_NAME + " WHERE " + whereStr.toString();
String[] argArray = typeArr.toArray(new String[typeArr.size()]);
SQLiteDatabase db = this.openDataBase("isEmpty(AhMessage.TYPE... types)");
Cursor cursor = db.rawQuery(selectQuery, argArray);
int count = 0;
if(cursor != null && cursor.moveToFirst()){
count = cursor.getInt(0);
}
this.closeDatabase("isEmpty(AhMessage.TYPE... types)");
return count == 0;
}
public boolean isEmpty(AhMessage.TYPE type) {
return this.isEmpty(type.toString());
}
// public List<AhMessage> popAllMessages() {
// List<AhMessage> messages = new ArrayList<AhMessage>();
//
// // Select All Query
// String selectQuery = "SELECT * FROM " + TABLE_NAME + " ORDER BY " + ID;
//
// SQLiteDatabase db = this.getReadableDatabase();
// Cursor cursor = db.rawQuery(selectQuery, null);
//
// // looping through all rows and adding to list
// if (cursor.moveToFirst()) {
// do {
// messages.add(convertToMessage(cursor));
// } while (cursor.moveToNext());
// }
// db.delete(TABLE_NAME, null ,null);
// db.close();
// // return contact list
// return messages;
// }
//
// public List<AhMessage> popAllMessages(String type) {
// List<AhMessage> messages = new ArrayList<AhMessage>();
//
// // Select All Query
// String selectQuery = "SELECT * FROM " + TABLE_NAME +
// " WHERE " + TYPE + " = ?" +
// " ORDER BY " + ID;
//
// SQLiteDatabase db = this.getReadableDatabase();
// Cursor cursor = db.rawQuery(selectQuery, new String[]{ type });
//
// // looping through all rows and adding to list
// if (cursor.moveToFirst()) {
// do {
// messages.add(convertToMessage(cursor));
// } while (cursor.moveToNext());
// }
// this.deleteAllMessages(type);
// db.close();
// // return message list
// return messages;
// }
//
// public List<AhMessage> popAllMessages(String... types) {
// List<AhMessage> messages = new ArrayList<AhMessage>();
// List<String> typeArr = new ArrayList<String>();
// StringBuilder whereStr = new StringBuilder();
// for (String type : types) {
// typeArr.add(type);
// whereStr.append(TYPE + "=? OR ");
// }
// whereStr.delete(whereStr.length()- 3, whereStr.length());
//
//
// String selectQuery = "SELECT * FROM " + TABLE_NAME +
// " WHERE " + whereStr.toString() +
// " ORDER BY " + ID;
//
// String[] argArray = typeArr.toArray(new String[typeArr.size()]);
// SQLiteDatabase db = this.getReadableDatabase();
//
// Cursor cursor = db.rawQuery(selectQuery, argArray);
//
// // looping through all rows and adding to list
// if (cursor.moveToFirst()) {
// do {
// messages.add(convertToMessage(cursor));
// } while (cursor.moveToNext());
// }
// this.deleteAllMessages(type);
// db.close();
// // return message list
// return messages;
// }
//
// public List<AhMessage> popAllMessages(AhMessage.TYPE... types) {
// List<AhMessage> messages = new ArrayList<AhMessage>();
//
// for(AhMessage.TYPE type : types){
// messages.addAll(this.popAllMessages(type));
// }
// sortMessages(messages);
// return messages;
// }
//
// public List<AhMessage> popAllMessages(AhMessage.TYPE type) {
// return this.popAllMessages(type.toString());
// }
public void deleteMessage(String messageId) {
SQLiteDatabase db = this.openDataBase("deleteMessage(String messageId)");
db.delete(TABLE_NAME, ID + " = ?",
new String[] { String.valueOf(messageId) });
this.closeDatabase("deleteMessage(String messageId)");
}
public void deleteAllMessages() {
SQLiteDatabase db = this.openDataBase("deleteAllMessages()");
db.delete(TABLE_NAME, null ,null);
this.closeDatabase("deleteAllMessages()");
}
public void deleteAllMessages(String strType) {
SQLiteDatabase db = this.openDataBase("deleteAllMessages(String strType)");
db.delete(TABLE_NAME, TYPE + " = ?", new String[]{ strType });
this.closeDatabase("deleteAllMessages(String strType)");
}
public void deleteAllMessages(AhMessage.TYPE type) {
this.deleteAllMessages(type.toString());
}
public List<AhMessage> getLastChupas() {
List<AhMessage> list = new ArrayList<AhMessage>();
String selectQuery = "SELECT t1.* FROM " + TABLE_NAME + " t1" +
" JOIN (SELECT MAX(id) id FROM " + TABLE_NAME +
" GROUP BY " + CHUPA_COMMUN_ID + ") t2 on t1.id = t2.id" +
" WHERE " + TYPE + " = ?" +
" ORDER BY " + TIME_STAMP + " DESC";
SQLiteDatabase db = this.openDataBase("getLastChupas()");
Cursor cursor = db.rawQuery(selectQuery, new String[]{ AhMessage.TYPE.CHUPA.toString()});
if (cursor != null && cursor.moveToFirst()) {
do {
list.add(convertToMessage(cursor));
} while (cursor.moveToNext());
}
this.closeDatabase("getLastChupas()");
return list;
}
public List<AhMessage> getChupasByCommunId(String chupaCommunId) {
List<AhMessage> list = new ArrayList<AhMessage>();
String selectQuery = "SELECT * FROM " + TABLE_NAME +
" WHERE " + TYPE + "=? AND " + CHUPA_COMMUN_ID + " = ?" +
" ORDER BY " + TIME_STAMP;
SQLiteDatabase db = this.openDataBase("getChupasByCommunId(String chupaCommunId)");
Cursor cursor = db.rawQuery(selectQuery, new String[]{ AhMessage.TYPE.CHUPA.toString()
,chupaCommunId});
if (cursor != null && cursor.moveToFirst()) {
do {
list.add(convertToMessage(cursor));
} while (cursor.moveToNext());
}
this.closeDatabase("getChupasByCommunId(String chupaCommunId)");
return list;
}
public AhMessage getLastChupaByCommunId(String chupaCommunId) {
String selectQuery = "SELECT * FROM " + TABLE_NAME +
" WHERE " + TYPE + "=? AND " + CHUPA_COMMUN_ID + " = ?" +
" ORDER BY " + TIME_STAMP + " DESC LIMIT 1";
SQLiteDatabase db = this.openDataBase("getLastChupaByCommunId(String chupaCommunId)");
Cursor cursor = db.rawQuery(selectQuery, new String[]{ AhMessage.TYPE.CHUPA.toString()
,chupaCommunId});
AhMessage message = null;
if (cursor != null && cursor.moveToFirst()) {
message = (convertToMessage(cursor));
}
this.closeDatabase("getLastChupaByCommunId(String chupaCommunId)");
return message;
}
private AhMessage convertToMessage(Cursor cursor) {
String _id = cursor.getString(0);
String type = cursor.getString(1);
String content = cursor.getString(2);
String sender = cursor.getString(3);
String senderId = cursor.getString(4);
String receiver = cursor.getString(5);
String receiverId = cursor.getString(6);
String timeStamp = cursor.getString(7);
String chupaCommunId = cursor.getString(8);
int status = cursor.getInt(9);
AhMessage.Builder messageBuilder = new AhMessage.Builder();
messageBuilder.setId(_id)
.setType(type)
.setContent(content)
.setSender(sender)
.setSenderId(senderId)
.setReceiver(receiver)
.setReceiverId(receiverId)
.setTimeStamp(timeStamp)
.setChupaCommunId(chupaCommunId)
.setStatus(status);
return messageBuilder.build();
}
public int getChupaBadgeNum(String chupaCommunId) {
return badgeDBHelper.getChupaBadgeNum(chupaCommunId);
}
public int getAllChupaBadgeNum() {
return badgeDBHelper.getAllChupaBadgeNum();
}
public void increaseChupaBadgeNum(String chupaCommunId) {
badgeDBHelper.increaseChupaBadgeNum(chupaCommunId);
}
public void clearChupaBadgeNum(String chupaCommunId) {
badgeDBHelper.clearChupaBadge(chupaCommunId);
}
public void clearAllChupaBadgeNum() {
badgeDBHelper.cleareAllChupaBadgeNum();
}
private class BadgeDBHelper extends SQLiteOpenHelper {
// Database Version
private static final int BADGE_DATABASE_VERSION = 2;
// Database Name
private static final String BADGE_DATABASE_NAME = "badge_db";
// Badges table name
private static final String CHUPA_BADGE_TABLE_NAME = "chupa_badges";
// Chupa badges Table Columns names
private final String CHUPA_BADGE_ID = "badge_id";
private final String CHUPA_BADGE_COMMUN_ID = "badge_chupa_commun_id";
private final String CHUPA_BADGE_COUNT = "count";
private AtomicInteger mBadgeCount = new AtomicInteger();
private SQLiteDatabase mBadgeDb;
private synchronized SQLiteDatabase openDatabase(String name) {
if (mBadgeCount.incrementAndGet() == 1) {
mBadgeDb = this.getWritableDatabase();
}
return mBadgeDb;
}
private synchronized void closeDatabase(String name) {
if (mBadgeCount.decrementAndGet() == 0) {
mBadgeDb.close();
}
}
public BadgeDBHelper(Context context) {
super(context, BADGE_DATABASE_NAME, null, BADGE_DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CHUPA_BADGES_TABLE = "CREATE TABLE " + CHUPA_BADGE_TABLE_NAME +
"("
+ CHUPA_BADGE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ CHUPA_BADGE_COMMUN_ID + " TEXT,"
+ CHUPA_BADGE_COUNT + " INTEGER"
+")";
db.execSQL(CREATE_CHUPA_BADGES_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
dropTable(db);
// Create tables again
onCreate(db);
}
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
dropTable(db);
// Create tables again
onCreate(db);
}
public void dropTable(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + CHUPA_BADGE_TABLE_NAME);
}
private int createChupaBadge(String chupaCommunId) {
SQLiteDatabase db = this.openDatabase("createChupaBadge(String chupaCommunId)");
ContentValues values = new ContentValues();
putValueWithoutNull(values, CHUPA_BADGE_COMMUN_ID, chupaCommunId);
values.put(CHUPA_BADGE_COUNT, 0);
long id = db.insert(CHUPA_BADGE_TABLE_NAME, null, values);
this.closeDatabase("createChupaBadge(String chupaCommunId)");
return (int)id;
}
private void updateChupaBadge(String chupaCommunId, int count) {
SQLiteDatabase db = this.openDatabase("updateChupaBadge(String chupaCommunId, int count)");
ContentValues values = new ContentValues();
values.put(CHUPA_BADGE_COUNT, count);
db.update(CHUPA_BADGE_TABLE_NAME, values, CHUPA_BADGE_COMMUN_ID + " = ?", new String[]{ chupaCommunId });
this.closeDatabase("updateChupaBadge(String chupaCommunId, int count)");
}
private void clearChupaBadge(String chupaCommunId) {
this.updateChupaBadge(chupaCommunId, 0);
}
private int getChupaBadgeNum(String chupaCommunId) {
String selectQuery = "SELECT * FROM " + CHUPA_BADGE_TABLE_NAME +
" WHERE " + CHUPA_BADGE_COMMUN_ID + " = ?";
SQLiteDatabase db = this.openDatabase("getChupaBadgeNum(String chupaCommunId)");
Cursor cursor = db.rawQuery(selectQuery, new String[]{ chupaCommunId });
int ret = -1;
if (cursor != null && cursor.moveToFirst()) {
ret = cursor.getInt(2);
}
this.closeDatabase("getChupaBadgeNum(String chupaCommunId)");
return ret;
}
private int getAllChupaBadgeNum() {
String selectQuery = "SELECT * FROM " + CHUPA_BADGE_TABLE_NAME;
SQLiteDatabase db = this.openDatabase("getAllChupaBadgeNum()");
Cursor cursor = db.rawQuery(selectQuery, null);
int total = 0;
if (cursor != null && cursor.moveToFirst()) {
do {
total += cursor.getInt(2);
} while(cursor.moveToNext());
}
this.closeDatabase("getAllChupaBadgeNum()");
return total;
}
private void increaseChupaBadgeNum(String chupaCommunId) {
int badgeNum = this.getChupaBadgeNum(chupaCommunId);
if (badgeNum == -1) {
this.createChupaBadge(chupaCommunId);
badgeNum = 0;
}
this.updateChupaBadge(chupaCommunId, ++badgeNum);
}
private void cleareAllChupaBadgeNum() {
SQLiteDatabase db = this.openDatabase("cleareAllChupaBadgeNum()");
db.delete(CHUPA_BADGE_TABLE_NAME, null, null);
this.closeDatabase("cleareAllChupaBadgeNum()");
}
}
}