OSDN Git Service

389fac5cbe389efb9420b5e0d08639f6cc6833b3
[neighbornote/NeighborNote.git] / src / com / swabunga / spell / engine / Configuration.java
1 /*\r
2 Jazzy - a Java library for Spell Checking\r
3 Copyright (C) 2001 Mindaugas Idzelis\r
4 Full text of license can be found in LICENSE.txt\r
5 \r
6 This library is free software; you can redistribute it and/or\r
7 modify it under the terms of the GNU Lesser General Public\r
8 License as published by the Free Software Foundation; either\r
9 version 2.1 of the License, or (at your option) any later version.\r
10 \r
11 This library is distributed in the hope that it will be useful,\r
12 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
14 Lesser General Public License for more details.\r
15 \r
16 You should have received a copy of the GNU Lesser General Public\r
17 License along with this library; if not, write to the Free Software\r
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\r
19 */\r
20 package com.swabunga.spell.engine;\r
21 \r
22 import java.security.AccessControlException;\r
23 \r
24 \r
25 /**\r
26  * The various settings used to control how a spell checker works are read from here.\r
27  * Includes the COST_* constants that decide how to figure the cost of converting one word to\r
28  * another in the EditDistance class.\r
29  * <p/>\r
30  * Also includes SPELL_* constants that control how misspellings are detected, for example, how to handle\r
31  * mixed-case words, etc.\r
32  *\r
33  * @author aim4min\r
34  * @see EditDistance\r
35  */\r
36 public abstract class Configuration {\r
37 \r
38   /** used by EditDistance: the cost of having to remove a character <br/>(integer greater than 0) */\r
39   public static final String COST_REMOVE_CHAR = "EDIT_DEL1";\r
40 \r
41   /** used by EditDistance: the cost of having to insert a character <br/>(integer greater than 0)*/\r
42   public static final String COST_INSERT_CHAR = "EDIT_DEL2";\r
43 \r
44   /**\r
45    * used by EditDistance: the cost of having to swap two adjoining characters\r
46    * for the swap value to ever be used, it should be smaller than the COST_REMOVE_CHAR or COST_INSERT_CHAR values\r
47    * <br/>(integer greater than 0)\r
48    */\r
49   public static final String COST_SWAP_CHARS = "EDIT_SWAP";\r
50 \r
51   /**\r
52    * used by EditDistance: the cost of having to change case, for example, from i to I.\r
53    * <br/>(integer greater than 0)\r
54    */\r
55   public static final String COST_CHANGE_CASE = "EDIT_CASE";\r
56 \r
57   /**\r
58    * used by EditDistance: the cost of having to substitute one character for another\r
59    * for the sub value to ever be used, it should be smaller than the COST_REMOVE_CHAR or COST_INSERT_CHAR values\r
60    * <br/>(integer greater than 0)\r
61    */\r
62   public static final String COST_SUBST_CHARS = "EDIT_SUB";\r
63 \r
64 //    public static final String EDIT_SIMILAR = "EDIT_SIMILAR"; //DMV: these does not seem to be used at all\r
65 //    public static final String EDIT_MIN = "EDIT_MIN";\r
66 //    public static final String EDIT_MAX = "EDIT_MAX";\r
67 \r
68   /** the maximum cost of suggested spelling. Any suggestions that cost more are thrown away\r
69    * <br/> integer greater than 1)\r
70    */\r
71   public static final String SPELL_THRESHOLD = "SPELL_THRESHOLD";\r
72 \r
73   /** words that are all upper case are not spell checked, example: "CIA" <br/>(boolean) */\r
74   public static final String SPELL_IGNOREUPPERCASE = "SPELL_IGNOREUPPERCASE";\r
75   /**  words that have mixed case are not spell checked, example: "SpellChecker"<br/>(boolean) */\r
76   public static final String SPELL_IGNOREMIXEDCASE = "SPELL_IGNOREMIXEDCASE";\r
77   /** words that look like an Internet address are not spell checked, example: "http://www.google.com" <br/>(boolean)*/\r
78   public static final String SPELL_IGNOREINTERNETADDRESSES = "SPELL_IGNOREINTERNETADDRESS";\r
79   /** words that have digits in them are not spell checked, example: "mach5" <br/>(boolean) */\r
80   public static final String SPELL_IGNOREDIGITWORDS = "SPELL_IGNOREDIGITWORDS";\r
81   /** I don't know what this does. It doesn't seem to be used <br/>(boolean) */\r
82   public static final String SPELL_IGNOREMULTIPLEWORDS = "SPELL_IGNOREMULTIPLEWORDS";\r
83   /** the first word of a sentence is expected to start with an upper case letter <br/>(boolean) */\r
84   public static final String SPELL_IGNORESENTENCECAPITALIZATION = "SPELL_IGNORESENTENCECAPTILIZATION";\r
85 \r
86   /**\r
87    * Gets one of the integer constants\r
88    * @param key one of the integer constants defined in this class\r
89    * @return int value of the setting\r
90    */\r
91   public abstract int getInteger(String key);\r
92 \r
93   /**\r
94    * Gets one of the boolean constants\r
95    * @param key one of the boolean constants defined in this class\r
96    * @return boolean value of the setting\r
97    */\r
98   public abstract boolean getBoolean(String key);\r
99 \r
100   /**\r
101    * Sets one of the integer constants\r
102    * @param key one of the integer constants defined in this class\r
103    * @param value new integer value of the constant\r
104    */\r
105   public abstract void setInteger(String key, int value);\r
106 \r
107   /**\r
108    * Sets one of the boolean constants\r
109    * @param key one of the boolean constants defined in this class\r
110    * @param value new boolean value of this setting\r
111    */\r
112   public abstract void setBoolean(String key, boolean value);\r
113 \r
114   /**\r
115    * gets a new default Configuration\r
116    * @return Configuration\r
117    */\r
118   public static final Configuration getConfiguration() {\r
119         try {\r
120                 String config = System.getProperty("jazzy.config"); // added by bd\r
121                 if (config != null && config.length() > 0)\r
122                         return getConfiguration(config);\r
123         } catch (AccessControlException e) {\r
124                 e.printStackTrace();\r
125         } \r
126     return getConfiguration(null);\r
127   }\r
128 \r
129   /**\r
130    * Returns a new instance of a Configuration class\r
131    * @param className - the class to return, must be based on Configuration\r
132    * @return Configuration\r
133    */\r
134   public static final Configuration getConfiguration(String className) {\r
135 \r
136     Configuration result;\r
137 \r
138     if (className != null && className.length() > 0) {\r
139       try {\r
140         result = (Configuration) Class.forName(className).newInstance();\r
141       } catch (InstantiationException e) {\r
142         result = new PropertyConfiguration();\r
143       } catch (IllegalAccessException e) {\r
144         result = new PropertyConfiguration();\r
145       } catch (ClassNotFoundException e) {\r
146         result = new PropertyConfiguration();\r
147       }\r
148     } else {\r
149       result = new PropertyConfiguration();\r
150     }\r
151     return result;\r
152   }\r
153 }\r