diff --git a/src/io/github/sspanak/tt9/db/DictionaryDb.java b/src/io/github/sspanak/tt9/db/DictionaryDb.java index 40de59d2..0eea12c9 100644 --- a/src/io/github/sspanak/tt9/db/DictionaryDb.java +++ b/src/io/github/sspanak/tt9/db/DictionaryDb.java @@ -130,12 +130,16 @@ public class DictionaryDb { Word dbWord = new Word(); dbWord.langId = language.getId(); dbWord.sequence = language.getDigitSequenceForWord(word); - dbWord.word = word.toLowerCase(language.getLocale()); + dbWord.word = word; dbWord.length = word.length(); dbWord.frequency = 1; new Thread(() -> { try { + if (getInstance().wordsDao().doesWordExist(dbWord.langId, dbWord.word) > 0) { + throw new SQLiteConstraintException("Word already exists."); + } + getInstance().wordsDao().insert(dbWord); getInstance().wordsDao().incrementFrequency(dbWord.langId, dbWord.word, dbWord.sequence); statusHandler.accept(0); diff --git a/src/io/github/sspanak/tt9/db/room/WordsDao.java b/src/io/github/sspanak/tt9/db/room/WordsDao.java index 8fdcd1a6..0083039c 100644 --- a/src/io/github/sspanak/tt9/db/room/WordsDao.java +++ b/src/io/github/sspanak/tt9/db/room/WordsDao.java @@ -21,7 +21,7 @@ public interface WordsDao { @Query("DELETE FROM words WHERE lang IN(:langIds)") void deleteByLanguage(ArrayList langIds); - @Query("SELECT COUNT(id) FROM words WHERE lang = :langId AND word = :word") + @Query("SELECT COUNT(id) FROM words WHERE lang = :langId AND word LIKE :word") int doesWordExist(int langId, String word); @Query(