Search in sources :

Example 1 with HistoryInfo

use of com.hippo.ehviewer.dao.HistoryInfo in project EhViewer by seven332.

the class EhDB method importDB.

/**
 * @param file The db file
 * @return error string, null for no error
 */
public static synchronized String importDB(Context context, File file) {
    try {
        SQLiteDatabase db = SQLiteDatabase.openDatabase(file.getPath(), null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
        int newVersion = DaoMaster.SCHEMA_VERSION;
        int oldVersion = db.getVersion();
        if (oldVersion < newVersion) {
            upgradeDB(db, oldVersion);
            db.setVersion(newVersion);
        } else if (oldVersion > newVersion) {
            return context.getString(R.string.cant_read_the_file);
        }
        DaoMaster daoMaster = new DaoMaster(db);
        DaoSession session = daoMaster.newSession();
        // Downloads
        DownloadManager manager = EhApplication.getDownloadManager(context);
        List<DownloadInfo> downloadInfoList = session.getDownloadsDao().queryBuilder().list();
        manager.addDownload(downloadInfoList);
        // Download label
        List<DownloadLabel> downloadLabelList = session.getDownloadLabelDao().queryBuilder().list();
        manager.addDownloadLabel(downloadLabelList);
        // Download dirname
        List<DownloadDirname> downloadDirnameList = session.getDownloadDirnameDao().queryBuilder().list();
        for (DownloadDirname dirname : downloadDirnameList) {
            putDownloadDirname(dirname.getGid(), dirname.getDirname());
        }
        // History
        List<HistoryInfo> historyInfoList = session.getHistoryDao().queryBuilder().list();
        putHistoryInfo(historyInfoList);
        // QuickSearch
        List<QuickSearch> quickSearchList = session.getQuickSearchDao().queryBuilder().list();
        List<QuickSearch> currentQuickSearchList = sDaoSession.getQuickSearchDao().queryBuilder().list();
        for (QuickSearch quickSearch : quickSearchList) {
            String name = quickSearch.name;
            for (QuickSearch q : currentQuickSearchList) {
                if (ObjectUtils.equal(q.name, name)) {
                    // The same name
                    name = null;
                    break;
                }
            }
            if (null == name) {
                continue;
            }
            insertQuickSearch(quickSearch);
        }
        // LocalFavorites
        List<LocalFavoriteInfo> localFavoriteInfoList = session.getLocalFavoritesDao().queryBuilder().list();
        for (LocalFavoriteInfo info : localFavoriteInfoList) {
            putLocalFavorites(info);
        }
        // Bookmarks
        // TODO
        // Filter
        List<Filter> filterList = session.getFilterDao().queryBuilder().list();
        List<Filter> currentFilterList = sDaoSession.getFilterDao().queryBuilder().list();
        for (Filter filter : filterList) {
            if (!currentFilterList.contains(filter)) {
                addFilter(filter);
            }
        }
        return null;
    } catch (Exception e) {
        // Ignore
        return context.getString(R.string.cant_read_the_file);
    }
}
Also used : LocalFavoriteInfo(com.hippo.ehviewer.dao.LocalFavoriteInfo) DownloadDirname(com.hippo.ehviewer.dao.DownloadDirname) DownloadManager(com.hippo.ehviewer.download.DownloadManager) IOException(java.io.IOException) DaoMaster(com.hippo.ehviewer.dao.DaoMaster) SQLiteDatabase(android.database.sqlite.SQLiteDatabase) Filter(com.hippo.ehviewer.dao.Filter) DownloadInfo(com.hippo.ehviewer.dao.DownloadInfo) QuickSearch(com.hippo.ehviewer.dao.QuickSearch) DownloadLabel(com.hippo.ehviewer.dao.DownloadLabel) HistoryInfo(com.hippo.ehviewer.dao.HistoryInfo) DaoSession(com.hippo.ehviewer.dao.DaoSession)

Example 2 with HistoryInfo

use of com.hippo.ehviewer.dao.HistoryInfo in project EhViewer by seven332.

the class EhDB method mergeOldDB.

public static void mergeOldDB(Context context) {
    sNewDB = false;
    OldDBHelper oldDBHelper = new OldDBHelper(context);
    SQLiteDatabase oldDB;
    try {
        oldDB = oldDBHelper.getReadableDatabase();
    } catch (Exception e) {
        return;
    }
    // Get GalleryInfo list
    SparseJLArray<GalleryInfo> map = new SparseJLArray<>();
    try {
        Cursor cursor = oldDB.rawQuery("select * from " + OldDBHelper.TABLE_GALLERY, null);
        if (cursor != null) {
            if (cursor.moveToFirst()) {
                while (!cursor.isAfterLast()) {
                    GalleryInfo gi = new GalleryInfo();
                    gi.gid = cursor.getInt(0);
                    gi.token = cursor.getString(1);
                    gi.title = cursor.getString(2);
                    gi.posted = cursor.getString(3);
                    gi.category = cursor.getInt(4);
                    gi.thumb = cursor.getString(5);
                    gi.uploader = cursor.getString(6);
                    try {
                        // In 0.6.x version, NaN is stored
                        gi.rating = cursor.getFloat(7);
                    } catch (Exception e) {
                        gi.rating = -1.0f;
                    }
                    map.put(gi.gid, gi);
                    cursor.moveToNext();
                }
            }
            cursor.close();
        }
    } catch (Exception e) {
    // Ignore
    }
    // Merge local favorites
    try {
        Cursor cursor = oldDB.rawQuery("select * from " + OldDBHelper.TABLE_LOCAL_FAVOURITE, null);
        if (cursor != null) {
            LocalFavoritesDao dao = sDaoSession.getLocalFavoritesDao();
            if (cursor.moveToFirst()) {
                long i = 0L;
                while (!cursor.isAfterLast()) {
                    // Get GalleryInfo first
                    long gid = cursor.getInt(0);
                    GalleryInfo gi = map.get(gid);
                    if (gi == null) {
                        Log.e(TAG, "Can't get GalleryInfo with gid: " + gid);
                        cursor.moveToNext();
                        continue;
                    }
                    LocalFavoriteInfo info = new LocalFavoriteInfo(gi);
                    info.setTime(i);
                    dao.insert(info);
                    cursor.moveToNext();
                    i++;
                }
            }
            cursor.close();
        }
    } catch (Exception e) {
    // Ignore
    }
    // Merge quick search
    try {
        Cursor cursor = oldDB.rawQuery("select * from " + OldDBHelper.TABLE_TAG, null);
        if (cursor != null) {
            QuickSearchDao dao = sDaoSession.getQuickSearchDao();
            if (cursor.moveToFirst()) {
                while (!cursor.isAfterLast()) {
                    QuickSearch quickSearch = new QuickSearch();
                    int mode = cursor.getInt(2);
                    String search = cursor.getString(4);
                    String tag = cursor.getString(7);
                    if (mode == ListUrlBuilder.MODE_UPLOADER && search != null && search.startsWith("uploader:")) {
                        search = search.substring("uploader:".length());
                    }
                    quickSearch.setTime((long) cursor.getInt(0));
                    quickSearch.setName(cursor.getString(1));
                    quickSearch.setMode(mode);
                    quickSearch.setCategory(cursor.getInt(3));
                    quickSearch.setKeyword(mode == ListUrlBuilder.MODE_TAG ? tag : search);
                    quickSearch.setAdvanceSearch(cursor.getInt(5));
                    quickSearch.setMinRating(cursor.getInt(6));
                    dao.insert(quickSearch);
                    cursor.moveToNext();
                }
            }
            cursor.close();
        }
    } catch (Exception e) {
    // Ignore
    }
    // Merge download info
    try {
        Cursor cursor = oldDB.rawQuery("select * from " + OldDBHelper.TABLE_DOWNLOAD, null);
        if (cursor != null) {
            DownloadsDao dao = sDaoSession.getDownloadsDao();
            if (cursor.moveToFirst()) {
                long i = 0L;
                while (!cursor.isAfterLast()) {
                    // Get GalleryInfo first
                    long gid = cursor.getInt(0);
                    GalleryInfo gi = map.get(gid);
                    if (gi == null) {
                        Log.e(TAG, "Can't get GalleryInfo with gid: " + gid);
                        cursor.moveToNext();
                        continue;
                    }
                    DownloadInfo info = new DownloadInfo(gi);
                    int state = cursor.getInt(2);
                    int legacy = cursor.getInt(3);
                    if (state == DownloadInfo.STATE_FINISH && legacy > 0) {
                        state = DownloadInfo.STATE_FAILED;
                    }
                    info.setState(state);
                    info.setLegacy(legacy);
                    if (cursor.getColumnCount() == 5) {
                        info.setTime(cursor.getLong(4));
                    } else {
                        info.setTime(i);
                    }
                    dao.insert(info);
                    cursor.moveToNext();
                    i++;
                }
            }
            cursor.close();
        }
    } catch (Exception e) {
    // Ignore
    }
    try {
        // Merge history info
        Cursor cursor = oldDB.rawQuery("select * from " + OldDBHelper.TABLE_HISTORY, null);
        if (cursor != null) {
            HistoryDao dao = sDaoSession.getHistoryDao();
            if (cursor.moveToFirst()) {
                while (!cursor.isAfterLast()) {
                    // Get GalleryInfo first
                    long gid = cursor.getInt(0);
                    GalleryInfo gi = map.get(gid);
                    if (gi == null) {
                        Log.e(TAG, "Can't get GalleryInfo with gid: " + gid);
                        cursor.moveToNext();
                        continue;
                    }
                    HistoryInfo info = new HistoryInfo(gi);
                    info.setMode(cursor.getInt(1));
                    info.setTime(cursor.getLong(2));
                    dao.insert(info);
                    cursor.moveToNext();
                }
            }
            cursor.close();
        }
    } catch (Exception e) {
    // Ignore
    }
    try {
        oldDBHelper.close();
    } catch (Exception e) {
    // Ignore
    }
}
Also used : QuickSearchDao(com.hippo.ehviewer.dao.QuickSearchDao) LocalFavoriteInfo(com.hippo.ehviewer.dao.LocalFavoriteInfo) LocalFavoritesDao(com.hippo.ehviewer.dao.LocalFavoritesDao) HistoryDao(com.hippo.ehviewer.dao.HistoryDao) GalleryInfo(com.hippo.ehviewer.client.data.GalleryInfo) Cursor(android.database.Cursor) IOException(java.io.IOException) DownloadsDao(com.hippo.ehviewer.dao.DownloadsDao) SQLiteDatabase(android.database.sqlite.SQLiteDatabase) DownloadInfo(com.hippo.ehviewer.dao.DownloadInfo) QuickSearch(com.hippo.ehviewer.dao.QuickSearch) SparseJLArray(com.hippo.yorozuya.collect.SparseJLArray) HistoryInfo(com.hippo.ehviewer.dao.HistoryInfo)

Example 3 with HistoryInfo

use of com.hippo.ehviewer.dao.HistoryInfo in project EhViewer by seven332.

the class EhDB method putHistoryInfo.

public static synchronized void putHistoryInfo(List<HistoryInfo> historyInfoList) {
    HistoryDao dao = sDaoSession.getHistoryDao();
    for (HistoryInfo info : historyInfoList) {
        if (null == dao.load(info.gid)) {
            dao.insert(info);
        }
    }
    List<HistoryInfo> list = dao.queryBuilder().orderDesc(HistoryDao.Properties.Time).limit(-1).offset(MAX_HISTORY_COUNT).list();
    dao.deleteInTx(list);
}
Also used : HistoryDao(com.hippo.ehviewer.dao.HistoryDao) HistoryInfo(com.hippo.ehviewer.dao.HistoryInfo)

Example 4 with HistoryInfo

use of com.hippo.ehviewer.dao.HistoryInfo in project EhViewer by seven332.

the class EhDB method putHistoryInfo.

public static synchronized void putHistoryInfo(GalleryInfo galleryInfo) {
    HistoryDao dao = sDaoSession.getHistoryDao();
    HistoryInfo info = dao.load(galleryInfo.gid);
    if (null != info) {
        // Update time
        info.time = System.currentTimeMillis();
        dao.update(info);
    } else {
        // New history
        info = new HistoryInfo(galleryInfo);
        info.time = System.currentTimeMillis();
        dao.insert(info);
        List<HistoryInfo> list = dao.queryBuilder().orderDesc(HistoryDao.Properties.Time).limit(-1).offset(MAX_HISTORY_COUNT).list();
        dao.deleteInTx(list);
    }
}
Also used : HistoryDao(com.hippo.ehviewer.dao.HistoryDao) HistoryInfo(com.hippo.ehviewer.dao.HistoryInfo)

Aggregations

HistoryInfo (com.hippo.ehviewer.dao.HistoryInfo)4 HistoryDao (com.hippo.ehviewer.dao.HistoryDao)3 SQLiteDatabase (android.database.sqlite.SQLiteDatabase)2 DownloadInfo (com.hippo.ehviewer.dao.DownloadInfo)2 LocalFavoriteInfo (com.hippo.ehviewer.dao.LocalFavoriteInfo)2 QuickSearch (com.hippo.ehviewer.dao.QuickSearch)2 IOException (java.io.IOException)2 Cursor (android.database.Cursor)1 GalleryInfo (com.hippo.ehviewer.client.data.GalleryInfo)1 DaoMaster (com.hippo.ehviewer.dao.DaoMaster)1 DaoSession (com.hippo.ehviewer.dao.DaoSession)1 DownloadDirname (com.hippo.ehviewer.dao.DownloadDirname)1 DownloadLabel (com.hippo.ehviewer.dao.DownloadLabel)1 DownloadsDao (com.hippo.ehviewer.dao.DownloadsDao)1 Filter (com.hippo.ehviewer.dao.Filter)1 LocalFavoritesDao (com.hippo.ehviewer.dao.LocalFavoritesDao)1 QuickSearchDao (com.hippo.ehviewer.dao.QuickSearchDao)1 DownloadManager (com.hippo.ehviewer.download.DownloadManager)1 SparseJLArray (com.hippo.yorozuya.collect.SparseJLArray)1