/************************************************************************** OmegaT - Computer Assisted Translation (CAT) tool with fuzzy matching, translation memory, keyword search, glossaries, and translation leveraging into updated projects. Copyright (C) 2016 Lev Abashkin Home page: http://www.omegat.org/ Support center: http://groups.yahoo.com/group/OmegaT/ This file is part of OmegaT. OmegaT is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OmegaT 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. **************************************************************************/ package org.omegat.languagetools; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; import org.omegat.languagetools.LanguageToolWrapper.BridgeType; import org.omegat.util.Preferences; /** * Manage LanguageTool preferences from one place * * @author Lev Abashkin */ public class LanguageToolPrefs { public final static String DEFAULT_DISABLED_CATEGORIES = "SPELL,TYPOS"; public final static String DEFAULT_DISABLED_RULES = "SAME_TRANSLATION,TRANSLATION_LENGTH,DIFFERENT_PUNCTUATION"; public final static BridgeType DEFAULT_BRIDGE_TYPE = BridgeType.NATIVE; private LanguageToolPrefs() { } public static void disableRule(String ruleId, String languageCode) { Set<String> rules = getEnabledRules(languageCode); rules.remove(ruleId); setEnabledRules(rules, languageCode); rules = getDisabledRules(languageCode); rules.add(ruleId); setDisabledRules(rules, languageCode); } public static void applyRules(ILanguageToolBridge bridge, String language) { Set<String> disabledCategories = getDisabledCategories(language); Set<String> disabledRules = getDisabledRules(language); Set<String> enabledRules = getEnabledRules(language); bridge.applyRuleFilters(disabledCategories, disabledRules, enabledRules); } public static void setBridgeType(BridgeType bridgeType) { Preferences.setPreference(Preferences.LANGUAGETOOL_BRIDGE_TYPE, bridgeType); } public static BridgeType getBridgeType() { return Preferences.getPreferenceEnumDefault(Preferences.LANGUAGETOOL_BRIDGE_TYPE, DEFAULT_BRIDGE_TYPE); } public static void setRemoteUrl(String url) { Preferences.setPreference(Preferences.LANGUAGETOOL_REMOTE_URL, url); } public static String getRemoteUrl() { return Preferences.getPreference(Preferences.LANGUAGETOOL_REMOTE_URL); } public static void setLocalServerJarPath(String path) { Preferences.setPreference(Preferences.LANGUAGETOOL_LOCAL_SERVER_JAR_PATH, path); } public static String getLocalServerJarPath() { return Preferences.getPreference(Preferences.LANGUAGETOOL_LOCAL_SERVER_JAR_PATH); } public static void setDisabledRules(Set<String> rules, String languageCode) { setLanguageSpecificPreference(rules, Preferences.LANGUAGETOOL_DISABLED_RULES_PREFIX, languageCode); } public static void setEnabledRules(Set<String> rules, String languageCode) { setLanguageSpecificPreference(rules, Preferences.LANGUAGETOOL_ENABLED_RULES_PREFIX, languageCode); } public static void setDisabledCategories(Set<String> categories, String languageCode) { setLanguageSpecificPreference(categories, Preferences.LANGUAGETOOL_DISABLED_CATEGORIES_PREFIX, languageCode); } public static Set<String> getDisabledRules(String languageCode) { return getLangauageSpecificPreference(Preferences.LANGUAGETOOL_DISABLED_RULES_PREFIX, languageCode, DEFAULT_DISABLED_RULES); } public static Set<String> getDefaultDisabledRules() { return setOf(DEFAULT_DISABLED_RULES); } public static Set<String> getEnabledRules(String languageCode) { return getLangauageSpecificPreference(Preferences.LANGUAGETOOL_ENABLED_RULES_PREFIX, languageCode, ""); } public static Set<String> getDisabledCategories(String languageCode) { return getLangauageSpecificPreference(Preferences.LANGUAGETOOL_DISABLED_CATEGORIES_PREFIX, languageCode, DEFAULT_DISABLED_CATEGORIES); } public static Set<String> getDefaultDisabledCategories() { return setOf(DEFAULT_DISABLED_CATEGORIES); } private static Set<String> getLangauageSpecificPreference(String namePrefix, String languageCode, String defaultValue) { return setOf(Preferences.getPreferenceDefault(namePrefix + "_" + languageCode, defaultValue)); } private static Set<String> setOf(String commaDelimited) { return Stream.of(commaDelimited.split(",")).filter(s -> !s.isEmpty()).collect(Collectors.toSet()); } private static void setLanguageSpecificPreference(Set<String> data, String namePrefix, String languageCode) { Preferences.setPreference(namePrefix + "_" + languageCode, String.join(",", data)); } }