package org.softeg.slartus.forpdaplus.db;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import org.softeg.slartus.forpdaapi.ListInfo;
import org.softeg.slartus.forpdaplus.App;
import org.softeg.slartus.forpdaplus.classes.Forum;
import org.softeg.slartus.forpdaplus.classes.forum.ExtTopic;
import org.softeg.slartus.forpdaplus.classes.forum.HistoryTopic;
import org.softeg.slartus.forpdaplus.common.AppLog;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
/**
* Created by IntelliJ IDEA.
* User: slinkin
* Date: 22.11.12
* Time: 7:27
* To change this template use File | Settings | File Templates.
*/
public class TopicsHistoryTable {
public static final String TABLE_NAME = "TopicsHistory";
public static final String COLUMN_TOPIC_ID = "Topic_id";
public static final String COLUMN_DATETIME = "DateTime";
public static final String COLUMN_URL = "Url";
public static String getTopicHistoryUrl(CharSequence topicId) throws IOException {
SQLiteDatabase db = null;
Cursor c = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getReadableDatabase();
assert db != null;
c = db.query("TopicsHistoryView", new String[]{COLUMN_URL}, TopicsTable.COLUMN_ID + "=?", new String[]{topicId.toString()},
null, null, null);
//Forum forum = ForumsTableOld.loadForumsTree();
if (c.moveToFirst()) {
return c.getString(c.getColumnIndex(COLUMN_URL));
}
} finally {
if (db != null) {
if (c != null)
c.close();
db.close();
}
}
return null;
}
public static HistoryTopic getTopicHistory(CharSequence topicId) throws IOException {
SQLiteDatabase db = null;
Cursor c = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getReadableDatabase();
assert db != null;
c = db.query("TopicsHistoryView", null, TopicsTable.COLUMN_ID + "=?", new String[]{topicId.toString()}, null, null, null);
Forum forum = ForumsTableOld.loadForumsTree();
if (c.moveToFirst()) {
int columnIdIndex = c.getColumnIndex(TopicsTable.COLUMN_ID);
int columnTitleIndex = c.getColumnIndex(TopicsTable.COLUMN_TITLE);
int columnDescriptionIndex = c.getColumnIndex(TopicsTable.COLUMN_DESCRIPTION);
int columnForumIdIndex = c.getColumnIndex(TopicsTable.COLUMN_FORUM_ID);
int columnDateTimeIndex = c.getColumnIndex(COLUMN_DATETIME);
int columnUrlIndex = c.getColumnIndex(COLUMN_URL);
String id = c.getString(columnIdIndex);
String title = c.getString(columnTitleIndex);
String description = c.getString(columnDescriptionIndex);
String forumId = c.getString(columnForumIdIndex);
String forumTitle = null;
String url = c.getString(columnUrlIndex);
Forum f = forum.findById(forumId, true, false);
if (f != null)
forumTitle = f.getTitle();
Date dateTime = null;
try {
dateTime = DbHelper.parseDate(c.getString(columnDateTimeIndex));
} catch (ParseException e) {
AppLog.e(App.getContext(), e);
}
HistoryTopic topic = new HistoryTopic(id, title, url);
topic.setDescription(description);
topic.setForumId(forumId);
topic.setForumTitle(forumTitle);
topic.setLastMessageDate(dateTime);
return topic;
}
} finally {
if (db != null) {
if (c != null)
c.close();
db.close();
}
}
return null;
}
public static ArrayList<HistoryTopic> getTopicsHistory(ListInfo listInfo) throws IOException {
ArrayList<HistoryTopic> res = new ArrayList<>();
SQLiteDatabase db = null;
Cursor c = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getReadableDatabase();
listInfo.setOutCount(BaseTable.getRowsCount(db, "TopicsHistoryView"));
assert db != null;
c = db.query("TopicsHistoryView", null, null, null, null, null, null, listInfo.getFrom() + ", 20");
Forum forum = ForumsTableOld.loadForumsTree();
if (c.moveToFirst()) {
int columnIdIndex = c.getColumnIndex(TopicsTable.COLUMN_ID);
int columnTitleIndex = c.getColumnIndex(TopicsTable.COLUMN_TITLE);
int columnDescriptionIndex = c.getColumnIndex(TopicsTable.COLUMN_DESCRIPTION);
int columnForumIdIndex = c.getColumnIndex(TopicsTable.COLUMN_FORUM_ID);
int columnDateTimeIndex = c.getColumnIndex(COLUMN_DATETIME);
int columnUrlIndex = c.getColumnIndex(COLUMN_URL);
// int columnForumTitleIndex = c.getColumnIndex("ForumTitle");
do {
String id = c.getString(columnIdIndex);
String title = c.getString(columnTitleIndex);
String description = c.getString(columnDescriptionIndex);
String forumId = c.getString(columnForumIdIndex);
String forumTitle = null;
String url = c.getString(columnUrlIndex);
Forum f = forum.findById(forumId, true, false);
if (f != null)
forumTitle = f.getTitle();
Date dateTime = null;
try {
dateTime = DbHelper.parseDate(c.getString(columnDateTimeIndex));
} catch (ParseException e) {
AppLog.e(App.getContext(), e);
}
HistoryTopic topic = new HistoryTopic(id, title, url);
topic.setDescription(description);
topic.setForumId(forumId);
topic.setForumTitle(forumTitle);
topic.setLastMessageDate(dateTime);
res.add(topic);
} while (c.moveToNext());
}
} finally {
if (db != null) {
if (c != null)
c.close();
db.close();
}
}
return res;
}
public static void addHistory(ExtTopic topic, String lastUrl) {
if (topic.getId() == null) return;
TopicsTable.addTopic(topic, true);
SQLiteDatabase db = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getWritableDatabase();
assert db != null;
db.execSQL("delete from " + TABLE_NAME + " where " + COLUMN_TOPIC_ID + "=" + topic.getId());
ContentValues values = new ContentValues();
values.put(COLUMN_TOPIC_ID, topic.getId());
values.put(COLUMN_DATETIME, DbHelper.DateTimeFormat.format(new Date()));
values.put(COLUMN_URL, lastUrl);
db.insertOrThrow(TABLE_NAME, null, values);
} catch (Exception ex) {
AppLog.e(App.getInstance(), ex);
} finally {
if (db != null) {
db.close();
}
}
}
public static void delete(CharSequence id) {
SQLiteDatabase db = null;
try {
DbHelper dbHelper = new DbHelper(App.getInstance());
db = dbHelper.getWritableDatabase();
assert db != null;
db.execSQL("delete from " + TABLE_NAME + " where " + COLUMN_TOPIC_ID + "=" + id);
} catch (Exception ex) {
AppLog.e(App.getInstance(), ex);
} finally {
if (db != null) {
db.close();
}
}
}
}