package org.softeg.slartus.forpdaplus.db; import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.classes.Forum; import org.softeg.slartus.forpdaplus.classes.Themes; import org.softeg.slartus.forpdaplus.classes.forum.ExtTopic; import org.softeg.slartus.forpdaplus.common.AppLog; import java.text.ParseException; import java.util.Date; /** * Created by slinkin on 06.08.13. */ public class TabTable { public static final String TABLE_NAME = "TabTopics"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_NUMBER = "Number"; public static final String COLUMN_TEMPLATE = "Template"; public static final String COLUMN_MAXCOUNT = "MaxCount"; // public static final String COLUMN_ID = "_id"; // public static final String COLUMN_FORUM_ID = "ForumId"; // public static final String COLUMN_TITLE = "Title"; // public static final String COLUMN_DESCRIPTION = "Description"; // public static final String COLUMN_LAST_MESSAGE_DATE = "LastMessageDate"; // public static final String COLUMN_LAST_MESSAGE_Author = "LastMessageAuthor"; // public static final String COLUMN_HASNEW = "HasNew"; // public static final String COLUMN_NUMBER = "Number"; public static Themes loadTab(String template) { SQLiteDatabase db = null; Cursor c = null; Themes res = new Themes(); try { DbHelper dbHelper = new DbHelper(App.getInstance()); db = dbHelper.getReadableDatabase(); String[] selectionArgs = new String[]{template, "-1"}; c = db.rawQuery("select MaxCount from TabTopics where Template=? and _id=?", selectionArgs); if (c.moveToFirst()) res.setThemesCountInt(c.getInt(0)); else return res; selectionArgs = new String[]{template}; c = db.rawQuery("select t.* from Topics t inner join TabTopics tt on tt._id=t._id where Template=?", selectionArgs); 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(TopicsTable.COLUMN_LAST_MESSAGE_DATE); int columnAuthorIndex = c.getColumnIndex(TopicsTable.COLUMN_LAST_MESSAGE_Author); int columnHasNewIndex = c.getColumnIndex(TopicsTable.COLUMN_HASNEW); // 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; 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); } String lastMessageAuthor = c.getString(columnAuthorIndex); Boolean hasNew = c.getInt(columnHasNewIndex) == 1; ExtTopic topic = new ExtTopic(id, title); topic.setDescription(description); topic.setForumId(forumId); topic.setForumTitle(forumTitle); topic.setLastMessageDate(dateTime); topic.setLastMessageAuthor(lastMessageAuthor); topic.setIsNew(hasNew); res.add(topic); } while (c.moveToNext()); } } catch (Exception ex) { AppLog.e(App.getInstance(), ex); } finally { if (db != null) { if (c != null) c.close(); db.close(); } } return res; } public static void saveTab(Themes topics, String template, int count) { SQLiteDatabase db = null; Cursor c = null; try { DbHelper dbHelper = new DbHelper(App.getInstance()); db = dbHelper.getWritableDatabase(); db.execSQL("delete from " + TABLE_NAME + " where Template='" + template + "'"); saveTabInfo(db, topics, template); for (int i = 0; i < Math.min(count, topics.size()); i++) { saveTabTable(db, topics.get(i), template); } } catch (Exception ex) { AppLog.e(App.getInstance(), ex); } finally { if (db != null) { if (c != null) c.close(); db.close(); } } } private static void saveTabTable(SQLiteDatabase db, ExtTopic topic, String template) { ContentValues values = new ContentValues(); values.put(COLUMN_ID, topic.getId()); values.put(COLUMN_TEMPLATE, template); db.insertOrThrow(TABLE_NAME, null, values); TopicsTable.addTopic(db, topic, false); } private static void saveTabInfo(SQLiteDatabase db, Themes topics, String template) { ContentValues values = new ContentValues(); values.put(COLUMN_ID, -1); values.put(COLUMN_TEMPLATE, template); values.put(COLUMN_MAXCOUNT, topics.getThemesCount()); db.insertOrThrow(TABLE_NAME, null, values); } }