package org.softeg.slartus.forpdaplus.db; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.classes.Forum; import java.io.IOException; import java.util.HashMap; /** * Created by IntelliJ IDEA. * User: slinkin * Date: 20.11.12 * Time: 9:25 * To change this template use File | Settings | File Templates. */ public class ForumsTableOld { public static final String TABLE_NAME = "Forums"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_PARENT_ID = "ParentId"; public static final String COLUMN_TITLE = "Title"; public static final String COLUMN_GLOBALSORTORDER = "GlobalSortOrder"; public static final String COLUMN_HAS_TOPICS = "HasTopics"; public static Forum loadForumsTree() throws IOException { return loadForumsTree(false); } public static Forum loadForumsTree(Boolean addTopicsItem) throws IOException { Forum mainForum = new Forum("-1", "4PDA"); SQLiteDatabase db = null; Cursor c = null; HashMap<String, Forum> hashMap = new HashMap<>(); try { ForumStructDbHelper dbHelper = new ForumStructDbHelper(App.getInstance()); db = dbHelper.getWritableDatabase(); assert db != null; c = db.query(TABLE_NAME, new String[]{COLUMN_ID, COLUMN_PARENT_ID, COLUMN_TITLE, COLUMN_HAS_TOPICS}, null, null, null, null, COLUMN_GLOBALSORTORDER); if (c.moveToFirst()) { int columnIdIndex = c.getColumnIndex(COLUMN_ID); int columnParentIdIndex = c.getColumnIndex(COLUMN_PARENT_ID); int columnTitleIndex = c.getColumnIndex(COLUMN_TITLE); int columnHasTopicsIndex = c.getColumnIndex(COLUMN_HAS_TOPICS); do { String id = c.getString(columnIdIndex); String parentId = c.isNull(columnParentIdIndex) ? null : c.getString(columnParentIdIndex); String title = c.getString(columnTitleIndex); Boolean hasTopics = addTopicsItem && c.getShort(columnHasTopicsIndex) == 1; Forum forum = new Forum(id, title); if (hasTopics) { Forum topicsItem = new Forum(id, title + " @ темы"); forum.addForum(topicsItem); } Forum parentForum = parentId == null ? mainForum : hashMap.get(parentId); if (parentForum != null) parentForum.addForum(forum); hashMap.put(id, forum); } while (c.moveToNext()); } if (addTopicsItem) clearForums(mainForum); } finally { if (db != null) { if (c != null) c.close(); db.close(); } } return mainForum; } private static void clearForums(Forum mainForum) { if (mainForum.getForums().size() == 1 && mainForum.getForums().get(0).getTitle().endsWith(" @ темы")) mainForum.getForums().clear(); else { for (Forum child : mainForum.getForums()) { clearForums(child); } } } }