[1014] | 1 | package com.swabunga.spell.engine; |
---|
| 2 | |
---|
| 3 | |
---|
| 4 | /** |
---|
| 5 | * The various settings used to control how a spell checker works are read from here. |
---|
| 6 | * Includes the COST_* constants that decide how to figure the cost of converting one word to |
---|
| 7 | * another in the EditDistance class. |
---|
| 8 | * <p/> |
---|
| 9 | * Also includes SPELL_* constants that control how misspellings are detected, for example, how to handle |
---|
| 10 | * mixed-case words, etc. |
---|
| 11 | * |
---|
| 12 | * @author aim4min |
---|
| 13 | * @see EditDistance |
---|
| 14 | */ |
---|
| 15 | public abstract class Configuration { |
---|
| 16 | |
---|
| 17 | /** used by EditDistance: the cost of having to remove a character <br/>(integer greater than 0) */ |
---|
| 18 | public static final String COST_REMOVE_CHAR = "EDIT_DEL1"; |
---|
| 19 | |
---|
| 20 | /** used by EditDistance: the cost of having to insert a character <br/>(integer greater than 0)*/ |
---|
| 21 | public static final String COST_INSERT_CHAR = "EDIT_DEL2"; |
---|
| 22 | |
---|
| 23 | /** |
---|
| 24 | * used by EditDistance: the cost of having to swap two adjoinging characters |
---|
| 25 | * for the swap value to ever be used, it should be smaller than the COST_REMOVE_CHAR or COST_INSERT_CHAR values |
---|
| 26 | * <br/>(integer greater than 0) |
---|
| 27 | */ |
---|
| 28 | public static final String COST_SWAP_CHARS = "EDIT_SWAP"; |
---|
| 29 | |
---|
| 30 | /** |
---|
| 31 | * used by EditDistance: the cost of having to change case, for example, from i to I. |
---|
| 32 | * <br/>(integer greater than 0) |
---|
| 33 | */ |
---|
| 34 | public static final String COST_CHANGE_CASE = "EDIT_CASE"; |
---|
| 35 | |
---|
| 36 | /** |
---|
| 37 | * used by EditDistance: the cost of having to substitute one character for another |
---|
| 38 | * for the sub value to ever be used, it should be smaller than the COST_REMOVE_CHAR or COST_INSERT_CHAR values |
---|
| 39 | * <br/>(integer greater than 0) |
---|
| 40 | */ |
---|
| 41 | public static final String COST_SUBST_CHARS = "EDIT_SUB"; |
---|
| 42 | |
---|
| 43 | // public static final String EDIT_SIMILAR = "EDIT_SIMILAR"; //DMV: these does not seem to be used at all |
---|
| 44 | // public static final String EDIT_MIN = "EDIT_MIN"; |
---|
| 45 | // public static final String EDIT_MAX = "EDIT_MAX"; |
---|
| 46 | |
---|
| 47 | /** the maximum cost of suggested spelling. Any suggestions that cost more are thrown away |
---|
| 48 | * <br/> integer greater than 1) |
---|
| 49 | */ |
---|
| 50 | public static final String SPELL_THRESHOLD = "SPELL_THRESHOLD"; |
---|
| 51 | |
---|
| 52 | /** words that are all upper case are not spell checked, example: "CIA" <br/>(boolean) */ |
---|
| 53 | public static final String SPELL_IGNOREUPPERCASE = "SPELL_IGNOREUPPERCASE"; |
---|
| 54 | /** words that have mixed case are not spell checked, example: "SpellChecker"<br/>(boolean) */ |
---|
| 55 | public static final String SPELL_IGNOREMIXEDCASE = "SPELL_IGNOREMIXEDCASE"; |
---|
| 56 | /** words that look like an internet address are not spell checked, example: "http://www.google.com" <br/>(boolean)*/ |
---|
| 57 | public static final String SPELL_IGNOREINTERNETADDRESSES = "SPELL_IGNOREINTERNETADDRESS"; |
---|
| 58 | /** words that have digits in them are not spell checked, example: "mach5" <br/>(boolean) */ |
---|
| 59 | public static final String SPELL_IGNOREDIGITWORDS = "SPELL_IGNOREDIGITWORDS"; |
---|
| 60 | /** I don't know what this does. It doesn't seem to be used <br/>(boolean) */ |
---|
| 61 | public static final String SPELL_IGNOREMULTIPLEWORDS = "SPELL_IGNOREMULTIPLEWORDS"; |
---|
| 62 | /** the first word of a sentance is expected to start with an upper case letter <br/>(boolean) */ |
---|
| 63 | public static final String SPELL_IGNORESENTENCECAPITALIZATION = "SPELL_IGNORESENTENCECAPTILIZATION"; |
---|
| 64 | |
---|
| 65 | /** |
---|
| 66 | * Gets one of the integer constants |
---|
| 67 | * @param key one of the integer constants defined in this class |
---|
| 68 | * @return int value of the setting |
---|
| 69 | */ |
---|
| 70 | public abstract int getInteger(String key); |
---|
| 71 | |
---|
| 72 | /** |
---|
| 73 | * Gets one of the boolean constants |
---|
| 74 | * @param key one of the boolean constants defined in this class |
---|
| 75 | * @return boolean value of the setting |
---|
| 76 | */ |
---|
| 77 | public abstract boolean getBoolean(String key); |
---|
| 78 | |
---|
| 79 | /** |
---|
| 80 | * Sets one of the integer constants |
---|
| 81 | * @param key one of the integer constants defined in this class |
---|
| 82 | * @param value new integer value of the constant |
---|
| 83 | */ |
---|
| 84 | public abstract void setInteger(String key, int value); |
---|
| 85 | |
---|
| 86 | /** |
---|
| 87 | * Sets one of the boolean constants |
---|
| 88 | * @param key one of the boolean constants defined in this class |
---|
| 89 | * @param value new boolean value of this setting |
---|
| 90 | */ |
---|
| 91 | public abstract void setBoolean(String key, boolean value); |
---|
| 92 | |
---|
| 93 | /** |
---|
| 94 | * gets a new default Configuration |
---|
| 95 | * @return Configuration |
---|
| 96 | */ |
---|
| 97 | public static final Configuration getConfiguration() { |
---|
| 98 | return getConfiguration(null); |
---|
| 99 | } |
---|
| 100 | |
---|
| 101 | /** |
---|
| 102 | * Returns a new instance of a Configuration class |
---|
| 103 | * @param className - the class to return, must be based on Configuration |
---|
| 104 | * @return Configuration |
---|
| 105 | */ |
---|
| 106 | public static final Configuration getConfiguration(String className) { |
---|
| 107 | |
---|
| 108 | Configuration result; |
---|
| 109 | |
---|
| 110 | if (className != null && className.length() > 0) { |
---|
| 111 | try { |
---|
| 112 | result = (Configuration) Class.forName(className).newInstance(); |
---|
| 113 | } catch (InstantiationException e) { |
---|
| 114 | result = new PropertyConfiguration(); |
---|
| 115 | } catch (IllegalAccessException e) { |
---|
| 116 | result = new PropertyConfiguration(); |
---|
| 117 | } catch (ClassNotFoundException e) { |
---|
| 118 | result = new PropertyConfiguration(); |
---|
| 119 | } |
---|
| 120 | } else { |
---|
| 121 | result = new PropertyConfiguration(); |
---|
| 122 | } |
---|
| 123 | return result; |
---|
| 124 | } |
---|
| 125 | } |
---|