Class GenericSpellDictionary

  • All Implemented Interfaces:
    SpellDictionary

    public class GenericSpellDictionary
    extends SpellDictionaryASpell
    The SpellDictionary class holds the instance of the dictionary.

    This class is thread safe. Derived classes should ensure that this preserved.

    There are many open source dictionary files. For just a few see: http://wordlist.sourceforge.net/

    This dictionary class reads words one per line. Make sure that your word list is formatted in this way (most are).

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.HashMap mainDictionary
      The hashmap that contains the word dictionary.
    • Constructor Summary

      Constructors 
      Constructor Description
      GenericSpellDictionary​(java.io.File wordList)
      Dictionary constructor that uses the DoubleMeta class with the English alphabet.
      GenericSpellDictionary​(java.io.File wordList, java.io.File phonetic)
      Dictionary constructor that uses an aspell phonetic file to build the transformation table.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addWord​(java.lang.String word)
      Add a word permanently to the dictionary (and the dictionary file).
      protected void createDictionary​(java.io.BufferedReader in)
      Constructs the dictionary from a word list file.
      java.util.List getWords​(java.lang.String code)
      Returns a list of strings (words) for the code.
      boolean isCorrect​(java.lang.String word)
      Returns true if the word is correctly spelled against the current word list.
      protected void putWord​(java.lang.String word)
      Allocates a word in the dictionary
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • mainDictionary

        protected java.util.HashMap mainDictionary
        The hashmap that contains the word dictionary. The map is hashed on the doublemeta code. The map entry contains a LinkedList of words that have the same double meta code.
    • Constructor Detail

      • GenericSpellDictionary

        public GenericSpellDictionary​(java.io.File wordList)
                               throws java.io.FileNotFoundException,
                                      java.io.IOException
        Dictionary constructor that uses the DoubleMeta class with the English alphabet.
        Parameters:
        wordList - The file containing dictionary as a words list.
        Throws:
        java.io.FileNotFoundException - when the words list file could not be located on the system.
        java.io.IOException - when problems occurs while reading the words list file
      • GenericSpellDictionary

        public GenericSpellDictionary​(java.io.File wordList,
                                      java.io.File phonetic)
                               throws java.io.FileNotFoundException,
                                      java.io.IOException
        Dictionary constructor that uses an aspell phonetic file to build the transformation table. If phonetic is null, then DoubleMeta is used with the English alphabet
        Parameters:
        wordList - The file containing dictionary as a words list.
        phonetic - The file containing the phonetic transformation information.
        Throws:
        java.io.FileNotFoundException - when the words list or phonetic file could not be located on the system
        java.io.IOException - when problems occurs while reading the words list or phonetic file
    • Method Detail

      • addWord

        public void addWord​(java.lang.String word)
        Add a word permanently to the dictionary (and the dictionary file).

        This needs to be made thread safe (synchronized)

        Parameters:
        word - The word to add to the dictionary
      • createDictionary

        protected void createDictionary​(java.io.BufferedReader in)
                                 throws java.io.IOException
        Constructs the dictionary from a word list file.

        Each word in the reader should be on a separate line.

        This is a very slow function. On my machine it takes quite a while to load the data in. I suspect that we could speed this up quite allot.

        Throws:
        java.io.IOException
      • putWord

        protected void putWord​(java.lang.String word)
        Allocates a word in the dictionary
      • getWords

        public java.util.List getWords​(java.lang.String code)
        Returns a list of strings (words) for the code.
        Specified by:
        getWords in class SpellDictionaryASpell
        Parameters:
        code - The phonetic code we want to find words for
        Returns:
        the list of words having the same phonetic code
      • isCorrect

        public boolean isCorrect​(java.lang.String word)
        Returns true if the word is correctly spelled against the current word list.
        Specified by:
        isCorrect in interface SpellDictionary
        Overrides:
        isCorrect in class SpellDictionaryASpell
        Parameters:
        word - The word to checked in the dictionary
        Returns:
        indication if the word is in the dictionary