Added time stamps to database.
This allows topics to be displayed to the user in the proper oder. The order is descending dates Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<manifest package="org.RickBarrette.osj.forum"
|
<manifest package="org.RickBarrette.osj.forum"
|
||||||
android:versionCode="310"
|
android:versionCode="328"
|
||||||
android:versionName="1.0" xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto">
|
android:versionName="1.0" xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto">
|
||||||
|
|
||||||
<uses-sdk
|
<uses-sdk
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ import java.io.FileInputStream;
|
|||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.channels.FileChannel;
|
import java.nio.channels.FileChannel;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
@@ -83,8 +85,8 @@ public class ForumDatabase {
|
|||||||
* These tables will be used for storing forum, topic, and post id's
|
* These tables will be used for storing forum, topic, and post id's
|
||||||
*/
|
*/
|
||||||
db.execSQL("CREATE TABLE " + TABLE_FORUMS + "( id TEXT PRIMARY KEY)");
|
db.execSQL("CREATE TABLE " + TABLE_FORUMS + "( id TEXT PRIMARY KEY)");
|
||||||
db.execSQL("CREATE TABLE " + TABLE_TOPICS + "( id TEXT PRIMARY KEY, " + KEY_FORUM_ID + " TEXT)");
|
db.execSQL("CREATE TABLE " + TABLE_TOPICS + "( id TEXT PRIMARY KEY, " + KEY_FORUM_ID + " TEXT, "+ KEY_TIME_STAMP + " DATE)");
|
||||||
db.execSQL("CREATE TABLE " + TABLE_THREADS + "( id TEXT PRIMARY KEY, " + KEY_FORUM_ID + " TEXT, " + KEY_TOPIC_ID + " TEXT)");
|
db.execSQL("CREATE TABLE " + TABLE_THREADS + "( id TEXT PRIMARY KEY, " + KEY_FORUM_ID + " TEXT, " + KEY_TOPIC_ID + " TEXT, "+ KEY_TIME_STAMP + " DATE)");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These tables will be used for storing forum, topic, and post
|
* These tables will be used for storing forum, topic, and post
|
||||||
@@ -205,6 +207,7 @@ public class ForumDatabase {
|
|||||||
private static final String KEY_FORUM_ID = "forum_id";
|
private static final String KEY_FORUM_ID = "forum_id";
|
||||||
private static final String KEY_TOPIC_ID = "topic_id";
|
private static final String KEY_TOPIC_ID = "topic_id";
|
||||||
private static final String KEY_POST_ID = "post_id";
|
private static final String KEY_POST_ID = "post_id";
|
||||||
|
private static final String KEY_TIME_STAMP = "time_stamp";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a string boolean from the database
|
* Parses a string boolean from the database
|
||||||
@@ -296,7 +299,15 @@ public class ForumDatabase {
|
|||||||
try {
|
try {
|
||||||
values.put(KEY_VALUE, new String((byte[]) item.getValue()));
|
values.put(KEY_VALUE, new String((byte[]) item.getValue()));
|
||||||
} catch (final ClassCastException e3) {
|
} catch (final ClassCastException e3) {
|
||||||
e3.printStackTrace();
|
try {
|
||||||
|
values.put(KEY_VALUE, ((Date) item.getValue()).toString());
|
||||||
|
} catch (final ClassCastException e4) {
|
||||||
|
try {
|
||||||
|
values.put(KEY_VALUE, (Long) item.getValue());
|
||||||
|
} catch (final ClassCastException e5) {
|
||||||
|
Log.w(TAG, "convertHashMapToContentValues", e5);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -427,7 +438,7 @@ public class ForumDatabase {
|
|||||||
*/
|
*/
|
||||||
public List<String> getThreads(String id) {
|
public List<String> getThreads(String id) {
|
||||||
final ArrayList<String> list = new ArrayList<String>();
|
final ArrayList<String> list = new ArrayList<String>();
|
||||||
final Cursor c = mDb.query(TABLE_THREADS, new String[] { KEY_ID }, KEY_TOPIC_ID +" = "+ DatabaseUtils.sqlEscapeString(id), null, null, null, null);
|
final Cursor c = mDb.query(TABLE_THREADS, new String[] { KEY_ID }, KEY_TOPIC_ID +" = "+ DatabaseUtils.sqlEscapeString(id), null, null, null, KEY_TIME_STAMP);
|
||||||
if (c.moveToFirst())
|
if (c.moveToFirst())
|
||||||
do
|
do
|
||||||
list.add(c.getString(0));
|
list.add(c.getString(0));
|
||||||
@@ -456,7 +467,7 @@ public class ForumDatabase {
|
|||||||
*/
|
*/
|
||||||
public List<String> getTopics(String id) {
|
public List<String> getTopics(String id) {
|
||||||
final ArrayList<String> list = new ArrayList<String>();
|
final ArrayList<String> list = new ArrayList<String>();
|
||||||
final Cursor c = mDb.query(TABLE_TOPICS, new String[] { KEY_ID }, KEY_FORUM_ID +" = "+ DatabaseUtils.sqlEscapeString(id) , null, null, null, null);
|
final Cursor c = mDb.query(TABLE_TOPICS, new String[] { KEY_ID }, KEY_FORUM_ID +" = "+ DatabaseUtils.sqlEscapeString(id) , null, null, null, KEY_TIME_STAMP + " DESC");
|
||||||
if (c.moveToFirst())
|
if (c.moveToFirst())
|
||||||
do
|
do
|
||||||
list.add(c.getString(0));
|
list.add(c.getString(0));
|
||||||
@@ -548,7 +559,7 @@ public class ForumDatabase {
|
|||||||
if (result != null)
|
if (result != null)
|
||||||
for (final Object element : result) {
|
for (final Object element : result) {
|
||||||
final HashMap<?, ?> contentHash = (HashMap<?, ?>) element;
|
final HashMap<?, ?> contentHash = (HashMap<?, ?>) element;
|
||||||
upsertThreadTable((String) forumId, (String) topicId, (String) contentHash.get("post_id"), convertHashMapToContentValues(contentHash));
|
upsertThreadTable((String) forumId, (String) topicId, (String) contentHash.get("post_id"), (Date) contentHash.get("post_time"), convertHashMapToContentValues(contentHash));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -572,7 +583,7 @@ public class ForumDatabase {
|
|||||||
if (result != null)
|
if (result != null)
|
||||||
for (final Object element : result) {
|
for (final Object element : result) {
|
||||||
final HashMap<?, ?> contentHash = (HashMap<?, ?>) element;
|
final HashMap<?, ?> contentHash = (HashMap<?, ?>) element;
|
||||||
upsertTopicTable((String) forumId, (String) contentHash.get("topic_id"), convertHashMapToContentValues(contentHash));
|
upsertTopicTable((String) forumId, (String) contentHash.get("topic_id"), (Date) contentHash.get("last_reply_time"), convertHashMapToContentValues(contentHash));
|
||||||
if (isRecursive)
|
if (isRecursive)
|
||||||
saveThreads(client, forumId, contentHash.get("topic_id"));
|
saveThreads(client, forumId, contentHash.get("topic_id"));
|
||||||
}
|
}
|
||||||
@@ -611,7 +622,7 @@ public class ForumDatabase {
|
|||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
private void upsertTable(final String table, final String where, final ContentValues item) {
|
private void upsertTable(final String table, final String where, final ContentValues item) {
|
||||||
Log.v(TAG, "upserting: " + item.getAsString(KEY));
|
Log.v(TAG, "upserting: " + item.getAsString(KEY) + " : "+ item.getAsString(KEY_VALUE));
|
||||||
if (!(mDb.update(table, item, where, null) > 0))
|
if (!(mDb.update(table, item, where, null) > 0))
|
||||||
mDb.insert(table, null, item);
|
mDb.insert(table, null, item);
|
||||||
}
|
}
|
||||||
@@ -626,7 +637,7 @@ public class ForumDatabase {
|
|||||||
* @throws NullPointerException
|
* @throws NullPointerException
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
private void upsertThreadTable(final String forumId, final String topicId, final String postId, final List<ContentValues> values) throws NullPointerException {
|
private void upsertThreadTable(final String forumId, final String topicId, final String postId, final Date time, final List<ContentValues> values) throws NullPointerException {
|
||||||
if (values == null)
|
if (values == null)
|
||||||
throw new NullPointerException("values was null");
|
throw new NullPointerException("values was null");
|
||||||
|
|
||||||
@@ -634,6 +645,7 @@ public class ForumDatabase {
|
|||||||
id.put(KEY_ID, postId);
|
id.put(KEY_ID, postId);
|
||||||
id.put(KEY_FORUM_ID, forumId);
|
id.put(KEY_FORUM_ID, forumId);
|
||||||
id.put(KEY_TOPIC_ID, topicId);
|
id.put(KEY_TOPIC_ID, topicId);
|
||||||
|
id.put(KEY_TIME_STAMP, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time));
|
||||||
upsertTable(TABLE_THREADS, KEY_ID + " = " + DatabaseUtils.sqlEscapeString(postId), id);
|
upsertTable(TABLE_THREADS, KEY_ID + " = " + DatabaseUtils.sqlEscapeString(postId), id);
|
||||||
|
|
||||||
for (final ContentValues item : values) {
|
for (final ContentValues item : values) {
|
||||||
@@ -652,13 +664,14 @@ public class ForumDatabase {
|
|||||||
* @throws NullPointerException
|
* @throws NullPointerException
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
private void upsertTopicTable(final String forumId, final String topicId, final List<ContentValues> values) throws NullPointerException {
|
private void upsertTopicTable(final String forumId, final String topicId, final Date time, final List<ContentValues> values) throws NullPointerException {
|
||||||
if (values == null)
|
if (values == null)
|
||||||
throw new NullPointerException("values was null");
|
throw new NullPointerException("values was null");
|
||||||
|
|
||||||
final ContentValues id = new ContentValues();
|
final ContentValues id = new ContentValues();
|
||||||
id.put(KEY_ID, topicId);
|
id.put(KEY_ID, topicId);
|
||||||
id.put(KEY_FORUM_ID, forumId);
|
id.put(KEY_FORUM_ID, forumId);
|
||||||
|
id.put(KEY_TIME_STAMP, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time));
|
||||||
upsertTable(TABLE_TOPICS, KEY_ID + " = " + DatabaseUtils.sqlEscapeString(topicId), id);
|
upsertTable(TABLE_TOPICS, KEY_ID + " = " + DatabaseUtils.sqlEscapeString(topicId), id);
|
||||||
|
|
||||||
for (final ContentValues item : values) {
|
for (final ContentValues item : values) {
|
||||||
|
|||||||
Reference in New Issue
Block a user