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);
}
}
});
}
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);
}
}
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);
}
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();
}
}
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());
}
Aggregations