org.languagetool.UserConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of languagetool-core Show documentation
Show all versions of languagetool-core Show documentation
LanguageTool is an Open Source proofreading software for English, French, German, Polish, Romanian, and more than 20 other languages. It finds many errors that a simple spell checker cannot detect like mixing up there/their and it detects some grammar problems.
/* LanguageTool, a natural language style checker
* Copyright (C) 2018 Daniel Naber (http://www.danielnaber.de)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
* USA
*/
package org.languagetool;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* User-specific configuration. So far, this contains a list of words and a settings map.
* @since 4.2
*/
@Experimental
public class UserConfig {
private final List userSpecificSpellerWords;
private final int maxSpellingSuggestions;
private final Map configurableRuleValues = new HashMap<>();
public UserConfig() {
this(new ArrayList<>(), new HashMap<>());
}
public UserConfig(List userSpecificSpellerWords) {
this(userSpecificSpellerWords, new HashMap<>());
}
public UserConfig(Map ruleValues) {
this(new ArrayList<>(), Objects.requireNonNull(ruleValues));
}
public UserConfig(List userSpecificSpellerWords, Map ruleValues) {
this(userSpecificSpellerWords, ruleValues, 0);
}
public UserConfig(List userSpecificSpellerWords, Map ruleValues, int maxSpellingSuggestions) {
this.userSpecificSpellerWords = Objects.requireNonNull(userSpecificSpellerWords);
for (Map.Entry entry : ruleValues.entrySet()) {
this.configurableRuleValues.put(entry.getKey(), entry.getValue());
}
this.maxSpellingSuggestions = maxSpellingSuggestions;
}
public List getAcceptedWords() {
return userSpecificSpellerWords;
}
public int getMaxSpellingSuggestions() {
return maxSpellingSuggestions;
}
public Map getConfigValues() {
return configurableRuleValues;
}
public void insertConfigValues(Map ruleValues) {
for (Map.Entry entry : ruleValues.entrySet()) {
this.configurableRuleValues.put(entry.getKey(), entry.getValue());
}
}
public int getConfigValueByID(String ruleID) {
if (configurableRuleValues.containsKey(ruleID)) {
return configurableRuleValues.get(ruleID);
}
return -1;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserConfig that = (UserConfig) o;
if (maxSpellingSuggestions != that.maxSpellingSuggestions) return false;
if (!userSpecificSpellerWords.equals(that.userSpecificSpellerWords)) return false;
return configurableRuleValues.equals(that.configurableRuleValues);
}
@Override
public int hashCode() {
int result = userSpecificSpellerWords.hashCode();
result = 31 * result + maxSpellingSuggestions;
result = 31 * result + configurableRuleValues.hashCode();
return result;
}
}