Search in sources :

Example 36 with CardDao

use of org.liberty.android.fantastischmemo.dao.CardDao in project AnyMemo by helloworld1.

the class LearnQueueManager method flushDirtyCache.

private synchronized void flushDirtyCache() {
    AnyMemoExecutor.submit(new Runnable() {

        public void run() {
            // Update the queue
            final AnyMemoDBOpenHelper dbOpenHelper = AnyMemoDBOpenHelperManager.getHelper(context, dbPath);
            final CardDao cardDao = dbOpenHelper.getCardDao();
            final LearningDataDao learningDataDao = dbOpenHelper.getLearningDataDao();
            try {
                learningDataDao.callBatchTasks(new Callable<Void>() {

                    public Void call() throws Exception {
                        Log.i(TAG, "Flushing dirty cache. # of cards to flush: " + dirtyCache.size());
                        while (!dirtyCache.isEmpty()) {
                            Card card = dirtyCache.take();
                            Log.i(TAG, "Flushing card id: " + card.getId() + " with learning data: " + card.getLearningData());
                            if (learningDataDao.update(card.getLearningData()) == 0) {
                                Log.w(TAG, "LearningDataDao update failed for : " + card.getLearningData());
                                throw new RuntimeException("LearningDataDao update failed! LearningData to update: " + card.getLearningData() + " current value: " + learningDataDao.queryForId(card.getLearningData().getId()));
                            }
                            if (cardDao.update(card) == 0) {
                                Log.w(TAG, "CardDao update failed for : " + card.getLearningData());
                                throw new RuntimeException("CardDao update failed. Card to update: " + card);
                            }
                        }
                        Log.i(TAG, "Flushing dirty cache done.");
                        return null;
                    }
                });
            } finally {
                AnyMemoDBOpenHelperManager.releaseHelper(dbOpenHelper);
            }
        }
    });
}
Also used : AnyMemoDBOpenHelper(org.liberty.android.fantastischmemo.common.AnyMemoDBOpenHelper) LearningDataDao(org.liberty.android.fantastischmemo.dao.LearningDataDao) CardDao(org.liberty.android.fantastischmemo.dao.CardDao) Callable(java.util.concurrent.Callable) Card(org.liberty.android.fantastischmemo.entity.Card)

Example 37 with CardDao

use of org.liberty.android.fantastischmemo.dao.CardDao in project AnyMemo by helloworld1.

the class LearnQueueManager method position.

private synchronized void position(int cardId) {
    Iterator<Card> learnIterator = learnQueue.iterator();
    Iterator<Card> reviewCacheIterator = reviewCache.iterator();
    Iterator<Card> newCacheIterator = newCache.iterator();
    int learnQueueRotateDistance = 0;
    while (learnIterator.hasNext()) {
        Card c = learnIterator.next();
        if (c.getId() == cardId) {
            int index = learnQueue.indexOf(c);
            learnQueueRotateDistance = -index;
            Log.i(TAG, "Rotate index: " + index);
        }
    }
    Collections.rotate(learnQueue, learnQueueRotateDistance);
    while (reviewCacheIterator.hasNext()) {
        Card c = reviewCacheIterator.next();
        if (c.getId() == cardId) {
            reviewCacheIterator.remove();
        }
    }
    while (newCacheIterator.hasNext()) {
        Card c = newCacheIterator.next();
        if (c.getId() == cardId) {
            newCacheIterator.remove();
        }
    }
    final AnyMemoDBOpenHelper dbOpenHelper = AnyMemoDBOpenHelperManager.getHelper(context, dbPath);
    final CardDao cardDao = dbOpenHelper.getCardDao();
    final LearningDataDao learningDataDao = dbOpenHelper.getLearningDataDao();
    try {
        Card headCard = null;
        headCard = cardDao.queryForId(cardId);
        learningDataDao.refresh(headCard.getLearningData());
        learnQueue.add(0, headCard);
    } finally {
        AnyMemoDBOpenHelperManager.releaseHelper(dbOpenHelper);
    }
}
Also used : AnyMemoDBOpenHelper(org.liberty.android.fantastischmemo.common.AnyMemoDBOpenHelper) LearningDataDao(org.liberty.android.fantastischmemo.dao.LearningDataDao) CardDao(org.liberty.android.fantastischmemo.dao.CardDao) Card(org.liberty.android.fantastischmemo.entity.Card)

Example 38 with CardDao

use of org.liberty.android.fantastischmemo.dao.CardDao in project AnyMemo by helloworld1.

the class QuizletUploadHelper method uploadToQuizlet.

/**
 * Upload cardsets list to Quizlet from a db file
 *
 * @param db
 *            file
 * @param authToken
 *            oauth token
 * @return null
 * @throws IOException
 *             IOException If http response code is not 2xx
 */
public void uploadToQuizlet(File file, String authToken) throws IOException {
    // First read card because if it failed we don't even bother uploading.
    AnyMemoDBOpenHelper helper = AnyMemoDBOpenHelperManager.getHelper(file.getAbsolutePath());
    List<Card> cardList = null;
    try {
        final CardDao cardDao = helper.getCardDao();
        cardList = cardDao.queryForAll();
    } finally {
        AnyMemoDBOpenHelperManager.releaseHelper(helper);
    }
    // Following doing upload
    StringBuilder data = new StringBuilder();
    data.append(String.format("whitespace=%s", URLEncoder.encode("1", "UTF-8")));
    data.append(String.format("&title=%s", URLEncoder.encode(file.getName(), "UTF-8")));
    // Get cards from cardList
    for (int i = 0; i < cardList.size(); i++) {
        Card c = cardList.get(i);
        data.append(String.format("&terms[]=%s", URLEncoder.encode(c.getQuestion(), "UTF-8")));
        data.append(String.format("&definitions[]=%s", URLEncoder.encode(c.getAnswer(), "UTF-8")));
    }
    data.append(String.format("&lang_terms=%s", URLEncoder.encode("en", "UTF-8")));
    data.append(String.format("&lang_definitions=%s", URLEncoder.encode("en", "UTF-8")));
    data.append(String.format("&allow_discussion=%s", URLEncoder.encode("true", "UTF-8")));
    URL url = new URL("https://api.quizlet.com/2.0/sets");
    makePostApiCall(url, data.toString(), authToken);
}
Also used : AnyMemoDBOpenHelper(org.liberty.android.fantastischmemo.common.AnyMemoDBOpenHelper) CardDao(org.liberty.android.fantastischmemo.dao.CardDao) URL(java.net.URL) Card(org.liberty.android.fantastischmemo.entity.Card)

Example 39 with CardDao

use of org.liberty.android.fantastischmemo.dao.CardDao in project AnyMemo by helloworld1.

the class CsvImporterTest method verify.

@Override
protected void verify(String destFilePath) throws Exception {
    AnyMemoDBOpenHelper helper = AnyMemoDBOpenHelperManager.getHelper(getContext(), destFilePath);
    try {
        CardDao cardDao = helper.getCardDao();
        CategoryDao categoryDao = helper.getCategoryDao();
        List<Card> cards = cardDao.queryForAll();
        List<Category> categories = categoryDao.queryForAll();
        for (Card c : cards) {
            categoryDao.refresh(c.getCategory());
        }
        assertEquals(4, cards.size());
        assertEquals(3, categories.size());
        assertEquals("Question1", cards.get(0).getQuestion());
        assertEquals("Answer1", cards.get(0).getAnswer());
        assertEquals("Category1", cards.get(0).getCategory().getName());
        assertEquals("Question2", cards.get(1).getQuestion());
        assertEquals("Answer2", cards.get(1).getAnswer());
        assertEquals("Category1", cards.get(1).getCategory().getName());
        assertEquals("Question3", cards.get(2).getQuestion());
        assertEquals("Answer3", cards.get(2).getAnswer());
        assertEquals("Category2", cards.get(2).getCategory().getName());
        assertEquals("Question4", cards.get(3).getQuestion());
        assertEquals("Answer4", cards.get(3).getAnswer());
        assertEquals("", cards.get(3).getCategory().getName());
    } finally {
        helper.close();
    }
}
Also used : AnyMemoDBOpenHelper(org.liberty.android.fantastischmemo.common.AnyMemoDBOpenHelper) Category(org.liberty.android.fantastischmemo.entity.Category) CategoryDao(org.liberty.android.fantastischmemo.dao.CategoryDao) CardDao(org.liberty.android.fantastischmemo.dao.CardDao) Card(org.liberty.android.fantastischmemo.entity.Card)

Example 40 with CardDao

use of org.liberty.android.fantastischmemo.dao.CardDao in project AnyMemo by helloworld1.

the class CardDaoTest method testShuffleOrdinals.

@SmallTest
@Test
public void testShuffleOrdinals() throws Exception {
    CardDao cardDao = helper.getCardDao();
    cardDao.shuffleOrdinals();
    assertEquals(28, cardDao.countOf());
}
Also used : CardDao(org.liberty.android.fantastischmemo.dao.CardDao) Test(org.junit.Test) SmallTest(android.support.test.filters.SmallTest) AbstractExistingDBTest(org.liberty.android.fantastischmemo.test.AbstractExistingDBTest) SmallTest(android.support.test.filters.SmallTest)

Aggregations

CardDao (org.liberty.android.fantastischmemo.dao.CardDao)66 Card (org.liberty.android.fantastischmemo.entity.Card)61 SmallTest (android.support.test.filters.SmallTest)37 Test (org.junit.Test)37 AbstractExistingDBTest (org.liberty.android.fantastischmemo.test.AbstractExistingDBTest)37 AnyMemoDBOpenHelper (org.liberty.android.fantastischmemo.common.AnyMemoDBOpenHelper)28 Category (org.liberty.android.fantastischmemo.entity.Category)27 CategoryDao (org.liberty.android.fantastischmemo.dao.CategoryDao)22 LearningData (org.liberty.android.fantastischmemo.entity.LearningData)15 LearningDataDao (org.liberty.android.fantastischmemo.dao.LearningDataDao)13 File (java.io.File)10 ArrayList (java.util.ArrayList)8 IOException (java.io.IOException)6 URL (java.net.URL)5 FileWriter (java.io.FileWriter)4 Date (java.util.Date)4 BufferedWriter (java.io.BufferedWriter)3 PrintWriter (java.io.PrintWriter)3 SAXParser (javax.xml.parsers.SAXParser)3 SAXParserFactory (javax.xml.parsers.SAXParserFactory)3