Started working on second database design
This commit is contained in:
@@ -80,7 +80,9 @@ public class ForumDatabase {
|
||||
* @author ricky barrette
|
||||
*/
|
||||
private void createDatabase(final SQLiteDatabase db) {
|
||||
// db.execSQL("CREATE TABLE " + TABLE + "(" + KEY + " TEXT PRIMARY KEY, " + KEY_VALUE + " TEXT)");
|
||||
db.execSQL("CREATE TABLE " + FORUM_TABLE + "( id INTEGER PRIMARY KEY, " + KEY_FORUM_ID + " TEXT, " + KEY + " TEXT, "+ KEY_VALUE + " TEXT)");
|
||||
db.execSQL("CREATE TABLE " + TOPIC_TABLE + "( id INTEGER PRIMARY KEY, " + KEY_FORUM_ID + " TEXT, " + KEY_TOPICM_ID + " TEXT, " + KEY + " TEXT, " + KEY_VALUE + " TEXT)");
|
||||
db.execSQL("CREATE TABLE " + THREAD_TABLE + "( id INTEGER PRIMARY KEY, " + KEY_FORUM_ID + " TEXT, " + KEY_TOPICM_ID + " TEXT, " + KEY_THREAD_ID + " TEXT, " + KEY + " TEXT, " + KEY_VALUE + " TEXT)");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,8 +94,12 @@ public class ForumDatabase {
|
||||
*/
|
||||
@Override
|
||||
public void onCreate(final SQLiteDatabase db) {
|
||||
if (Constraints.DROP_TABLES_EVERY_TIME)
|
||||
db.execSQL("DROP TABLE IF EXISTS " + TABLE);
|
||||
if (Constraints.DROP_TABLES_EVERY_TIME){
|
||||
db.execSQL("DROP TABLE IF EXISTS " + FORUM_TABLE);
|
||||
db.execSQL("DROP TABLE IF EXISTS " + TOPIC_TABLE);
|
||||
db.execSQL("DROP TABLE IF EXISTS " + THREAD_TABLE);
|
||||
}
|
||||
|
||||
createDatabase(db);
|
||||
if (mListener != null)
|
||||
mListener.onDatabaseCreate();
|
||||
@@ -169,10 +175,9 @@ public class ForumDatabase {
|
||||
/*
|
||||
* Database tables
|
||||
*/
|
||||
private final String TABLE = "table";
|
||||
private final String FORUM_TABLE = "forum_";
|
||||
private final String TOPIC_TABLE = "topic_";
|
||||
private final String THREAD_TABLE = "thread_";
|
||||
private final String FORUM_TABLE = "forums";
|
||||
private final String TOPIC_TABLE = "topics";
|
||||
private final String THREAD_TABLE = "threads";
|
||||
|
||||
/*
|
||||
* Database keys
|
||||
@@ -339,22 +344,15 @@ public class ForumDatabase {
|
||||
* @throws NullPointerException
|
||||
* @author ricky barrette
|
||||
*/
|
||||
public void upsertTable(final String table, final List<ContentValues> values) throws NullPointerException {
|
||||
public void upsertForumTable(final String forumId, final List<ContentValues> values) throws NullPointerException {
|
||||
if (values == null)
|
||||
throw new NullPointerException("info was null");
|
||||
/*
|
||||
* create a new table if needed
|
||||
*/
|
||||
try {
|
||||
mDb.execSQL("CREATE TABLE " + table + " (" + KEY + " TEXT PRIMARY KEY, " + KEY_VALUE + " TEXT)");
|
||||
} catch (SQLiteException e) {
|
||||
// ignore exception, table is already created
|
||||
}
|
||||
|
||||
for(ContentValues item : values){
|
||||
item.put(KEY_FORUM_ID, forumId);
|
||||
Log.v(TAG, "upserting: "+ item.getAsString(KEY));
|
||||
if (!(mDb.update(table, item, KEY +" = "+ DatabaseUtils.sqlEscapeString(item.getAsString(KEY)), null) > 0))
|
||||
mDb.insert(table, null, item);
|
||||
if (!(mDb.update(FORUM_TABLE, item, KEY +" = "+ DatabaseUtils.sqlEscapeString(item.getAsString(KEY)), null) > 0))
|
||||
mDb.insert(FORUM_TABLE, null, item);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -383,7 +381,7 @@ public class ForumDatabase {
|
||||
if (result != null)
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
final HashMap<?, ?> contentHash = (HashMap<?, ?>) result[i];
|
||||
upsertTable(FORUM_TABLE + contentHash.get("forum_id"), convertHashMapToContentValues(contentHash));
|
||||
upsertForumTable((String)contentHash.get("forum_id"), convertHashMapToContentValues(contentHash));
|
||||
|
||||
saveTopics(client, contentHash.get("forum_id"));
|
||||
|
||||
@@ -408,7 +406,7 @@ public class ForumDatabase {
|
||||
if (result != null)
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
final HashMap<?, ?> contentHash = (HashMap<?, ?>) result[i];
|
||||
upsertTable(TOPIC_TABLE + contentHash.get("topic_id"),convertHashMapToContentValues((HashMap<?, ?>) result[i]));
|
||||
//upsertTable(TOPIC_TABLE + contentHash.get("topic_id"),convertHashMapToContentValues((HashMap<?, ?>) result[i]));
|
||||
|
||||
saveThreads(client, contentHash.get("topic_id"));
|
||||
}
|
||||
@@ -433,7 +431,7 @@ public class ForumDatabase {
|
||||
if (result != null)
|
||||
for (int i = 0; i < result.length; i++) {
|
||||
final HashMap<?, ?> contentHash = (HashMap<?, ?>) result[i];
|
||||
upsertTable(THREAD_TABLE + contentHash.get("post_id"),convertHashMapToContentValues((HashMap<?, ?>) result[i]));
|
||||
//upsertTable(THREAD_TABLE + contentHash.get("post_id"),convertHashMapToContentValues((HashMap<?, ?>) result[i]));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user