1 22 package org.columba.mail.spellcheck.cswilly; 23 24 import java.util.ArrayList ; 25 import java.util.List ; 26 import java.util.StringTokenizer ; 27 28 29 55 public class Result { 56 public static final Type ERROR = new Type("Error"); 57 public static final Type OK = new Type("OK "); 58 public static final Type NONE = new Type("None"); 59 public static final Type SUGGESTION = new Type("Suggestion"); 60 private int _offset; 61 private Type _type; 62 private List _suggestions; 63 private String _originalWord; 64 65 public Result(String line) { 66 if ((line == null) || (line.length() <= 0)) { 67 processError(line); 68 } else if (line.charAt(0) == '*') { 69 processOk(line); 70 } else if (line.charAt(0) == '&') { 71 processSuggestion(line); 72 } else if (line.charAt(0) == '#') { 73 processNone(line); 74 } else { 75 processError(line); 76 } 77 } 78 79 public int getOffset() { 80 return _offset; 81 } 82 83 public Type getType() { 84 return _type; 85 } 86 87 public List getSuggestions() { 88 return _suggestions; 89 } 90 91 public String getOriginalWord() { 92 return _originalWord; 93 } 94 95 public String toString() { 96 StringBuffer buff = new StringBuffer (); 97 buff.append("[type:"); 98 buff.append(_type); 99 buff.append(",originalWord:"); 100 buff.append(_originalWord); 101 buff.append(",offset:"); 102 buff.append(_offset); 103 buff.append(",suggestions:"); 104 buff.append(_suggestions); 105 106 return buff.toString(); 107 } 108 109 private void processError(String line) { 110 _offset = 0; 111 _type = ERROR; 112 _suggestions = new ArrayList (); 113 _originalWord = ""; 114 } 115 116 private void processOk(String line) { 117 _offset = 0; 118 _type = OK; 119 _suggestions = new ArrayList (); 120 _originalWord = ""; 121 } 122 123 private void processNone(String line) { 124 _type = NONE; 125 _suggestions = new ArrayList (); 126 127 StringTokenizer st = new StringTokenizer (line); 128 st.nextToken(); _originalWord = st.nextToken(); 130 _offset = Integer.parseInt(st.nextToken()); 131 } 132 133 private void processSuggestion(String line) { 134 _type = SUGGESTION; 135 136 StringTokenizer st = new StringTokenizer (line); 137 st.nextToken(); _originalWord = st.nextToken(); 139 140 int count = Integer.parseInt(st.nextToken().trim()); 141 _suggestions = new ArrayList (count); 142 _offset = Integer.parseInt(st.nextToken(":").trim()); 143 144 st = new StringTokenizer (st.nextToken(":"), ","); 145 146 while (st.hasMoreTokens()) { 147 String suggestion = st.nextToken().trim(); 148 _suggestions.add(suggestion); 149 } 150 } 151 152 private static class Type { 153 private final String _typeName; 154 155 Type(String typeName) { 156 _typeName = typeName; 157 } 158 159 public String toString() { 160 return _typeName; 161 } 162 } 163 } 164 | Popular Tags |