package org.iilab.pb.data;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;
import java.util.ArrayList;
import java.util.List;
import org.iilab.pb.common.AppConstants;
import org.iilab.pb.model.PageAction;
/**
* Created by aoe on 1/5/14.
*/
public class PageActionDbManager {
private static final String TAG = PageActionDbManager.class.getSimpleName();
private static final String TABLE_PAGE_ACTION = "page_action_table";
private static final String PAGE_ID = "page_id";
private static final String PAGE_LANGUAGE = "page_language";
private static final String ACTION_TITLE = "action_title";
private static final String ACTION_LINK = "action_link";
private static final String ACTION_STATUS = "action_status";
private static final String ACTION_LANGUAGE = "action_language";
private static final String ACTION_CONFIRMATION = "action_confirmation";
private static final String CREATE_TABLE_PAGE_ACTION = "create table " + TABLE_PAGE_ACTION + " ( "
+ AppConstants.TABLE_PRIMARY_KEY + " integer primary key autoincrement, " + PAGE_ID + " text, " +
PAGE_LANGUAGE + " text, " + ACTION_TITLE + " text, " + ACTION_LINK + " text, " + ACTION_STATUS + " text, "
+ ACTION_LANGUAGE + " text, " + ACTION_CONFIRMATION + " text);";
private static final String INSERT_SQL = "insert into " + TABLE_PAGE_ACTION + " (" + PAGE_ID + ", " + PAGE_LANGUAGE + ", "
+ ACTION_TITLE + ", " + ACTION_LINK + ", " + ACTION_STATUS + ", " + ACTION_LANGUAGE +
", " + ACTION_CONFIRMATION + ") values (?,?,?,?,?,?,?)";
public static void createTable(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_PAGE_ACTION);
}
public static void dropTable(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_PAGE_ACTION);
}
public static long insert(SQLiteDatabase db, PageAction action, String pageId, String lang) throws SQLException {
SQLiteStatement insertStatement = db.compileStatement(INSERT_SQL);
if(pageId != null)
insertStatement.bindString(1, pageId);
if(lang != null)
insertStatement.bindString(2, lang);
if(action.getTitle() != null)
insertStatement.bindString(3, action.getTitle());
if(action.getLink() != null)
insertStatement.bindString(4, action.getLink());
if(action.getStatus() != null)
insertStatement.bindString(5, action.getStatus());
if(action.getLanguage() != null)
insertStatement.bindString(6, action.getLanguage());
if(action.getConfirmation() != null)
insertStatement.bindString(7, action.getConfirmation());
return insertStatement.executeInsert();
// ContentValues cv = new ContentValues();
//
// cv.put(PAGE_ID, pageId);
// cv.put(PAGE_LANGUAGE, lang);
// cv.put(ACTION_TITLE, action.getTitle());
// cv.put(ACTION_LINK, action.getLink());
// cv.put(ACTION_STATUS, action.getStatus());
// cv.put(ACTION_LANGUAGE, action.getLanguage());
//
// return db.insert(TABLE_PAGE_ACTION, null, cv);
}
public static List<PageAction> retrieve(SQLiteDatabase db, String pageId, String lang) throws SQLException {
List<PageAction> actionList = new ArrayList<PageAction>();
Cursor c = db.query(TABLE_PAGE_ACTION, null, PAGE_ID + "=? AND " + PAGE_LANGUAGE + "=?", new String[]{pageId, lang}, null, null, null);
if (c != null && c.getCount() > 0) {
c.moveToFirst();
while (!c.isAfterLast()) {
String actionTitle = c.getString(c.getColumnIndex(ACTION_TITLE));
String actionLink = c.getString(c.getColumnIndex(ACTION_LINK));
String actionStatus = c.getString(c.getColumnIndex(ACTION_STATUS));
String actionLang = c.getString(c.getColumnIndex(ACTION_LANGUAGE));
String confirmation = c.getString(c.getColumnIndex(ACTION_CONFIRMATION));
PageAction action = new PageAction(actionTitle, actionLink, actionStatus, actionLang, confirmation);
actionList.add(action);
c.moveToNext();
}
}
c.close();
return actionList;
}
public static long update(SQLiteDatabase db, PageAction action, String pageId, String lang) throws SQLException {
ContentValues cv = new ContentValues();
cv.put(ACTION_TITLE, action.getTitle());
cv.put(ACTION_LINK, action.getLink());
cv.put(ACTION_STATUS, action.getStatus());
cv.put(ACTION_LANGUAGE, action.getLanguage());
cv.put(ACTION_CONFIRMATION, action.getConfirmation());
return db.update(TABLE_PAGE_ACTION, cv, PAGE_ID + "=? AND " + PAGE_LANGUAGE + "=?", new String[]{pageId, lang});
}
public static boolean isExist(SQLiteDatabase db, String pageId, String lang) throws SQLException {
boolean itemExist = false;
Cursor c = db.query(TABLE_PAGE_ACTION, null, PAGE_ID + "=? AND " + PAGE_LANGUAGE + "=?", new String[]{pageId, lang}, null, null, null);
if ((c != null) && (c.getCount() > 0)) {
itemExist = true;
}
c.close();
return itemExist;
}
// public static void insertOrUpdate(SQLiteDatabase db, PageAction action, String pageId, String lang){
// if(isExist(db, pageId, lang)){
// update(db, action, pageId, lang);
// }
// else{
// insert(db, action, pageId, lang);
// }
// }
public static int delete(SQLiteDatabase db, String pageId, String lang){
return db.delete(TABLE_PAGE_ACTION, PAGE_ID + "=? AND " + PAGE_LANGUAGE + "=?", new String[]{pageId, lang});
}
}