1 22 package org.columba.mail.spellcheck.cswilly; 23 24 25 import java.util.HashMap ; 27 import java.util.HashSet ; 28 import java.util.List ; 29 30 31 37 public class Validator { 38 private final HashMap _changeAllMap = new HashMap (); 39 private final HashSet _ignoreAllSet = new HashSet (); 40 41 49 public String validate(String line, List results) { 50 String checkedLine = line; 51 52 for (int ii = results.size() - 1; ii >= 0; ii--) { 53 Result result = (Result) results.get(ii); 54 55 if (result.getType() != Result.OK) { 56 String replacementWord; 57 58 if (_changeAllMap.containsKey(result.getOriginalWord())) { 59 replacementWord = (String ) _changeAllMap.get(result.getOriginalWord()); 60 } else if (_ignoreAllSet.contains(result.getOriginalWord())) { 61 replacementWord = result.getOriginalWord(); 62 } else { 63 replacementWord = validate(result); 64 65 if (replacementWord == null) { 66 checkedLine = null; 67 68 break; 69 } 70 } 71 72 if (replacementWord != null) { 73 checkedLine = replaceWord(checkedLine, 74 result.getOriginalWord(), result.getOffset(), 75 replacementWord); 76 } 77 } 78 } 79 80 return checkedLine; 81 } 82 83 94 public String validate(Result result) { 95 String replacementWord = null; 96 97 ValidationDialog validationDialog; 98 validationDialog = new ValidationDialog(result.getOriginalWord(), 99 result.getSuggestions()); 100 validationDialog.setVisible(true); 101 102 ValidationDialog.UserAction userAction = validationDialog.getUserAction(); 103 104 if (userAction == ValidationDialog.CANCEL) { 105 replacementWord = null; 106 } else if (userAction == ValidationDialog.CHANGE_ALL) { 107 if (_changeAllMap.containsKey(result.getOriginalWord())) { 108 System.err.println( 109 "Validator error: Change all twice same word: " + 110 result.getOriginalWord()); 111 } 112 113 _changeAllMap.put(result.getOriginalWord(), 114 validationDialog.getSelectedWord()); 115 replacementWord = validationDialog.getSelectedWord(); 116 } else if (userAction == ValidationDialog.CHANGE) { 117 replacementWord = validationDialog.getSelectedWord(); 118 } else if (userAction == ValidationDialog.IGNORE_ALL) { 119 if (_ignoreAllSet.contains(result.getOriginalWord())) { 120 System.err.println( 121 "Validator error: Ignore all twice same word: " + 122 result.getOriginalWord()); 123 } 124 125 _ignoreAllSet.add(result.getOriginalWord()); 126 replacementWord = result.getOriginalWord(); 127 } else if (userAction == ValidationDialog.IGNORE) { 128 replacementWord = result.getOriginalWord(); 129 } 130 131 return replacementWord; 132 } 133 134 137 protected String replaceWord(String originalLine, String originalWord, 138 int originalIndex, String replacementWord) { 139 String leftText = originalLine.substring(0, originalIndex - 1); 140 String rightText = originalLine.substring((originalIndex + 141 originalWord.length()) - 1); 142 143 StringBuffer buf = new StringBuffer (); 144 buf.append(leftText); 145 buf.append(replacementWord); 146 buf.append(rightText); 147 148 return buf.toString(); 149 } 150 } 151 | Popular Tags |