/* * The MIT License (MIT) * * Copyright (c) 2015 Jakob Hendeß * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.xlrnet.metadict.engines.woxikon; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.xlrnet.metadict.api.engine.*; import org.xlrnet.metadict.api.exception.MetadictTechnicalException; import org.xlrnet.metadict.api.language.BilingualDictionary; import org.xlrnet.metadict.api.language.GrammaticalGender; import org.xlrnet.metadict.api.language.Language; import org.xlrnet.metadict.api.query.EntryType; import org.xlrnet.metadict.api.query.ImmutableBilingualEntry; import org.xlrnet.metadict.api.query.ImmutableBilingualQueryResult; import org.xlrnet.metadict.api.query.ImmutableDictionaryObject; /** * Provider with a search engine for searching in various dictionaries on {@see <a * href="http://www.woxikon.de/">woxikon.de</a>}. */ public class WoxikonEngineProvider extends AbstractSearchEngineProvider { @Nullable @Override public AutoTestSuite getAutoTestSuite() throws MetadictTechnicalException { return ImmutableAutoTestSuite.builder() .addAutoTestCase(ImmutableAutoTestCase.builder() .setTestQueryString("essen") .setBilingualTargetDictionary(BilingualDictionary.fromQueryString("de-en", true)) .setExpectedBilingualResults( ImmutableBilingualQueryResult.builder() .addBilingualEntry(ImmutableBilingualEntry.builder() .setEntryType(EntryType.VERB) .setInputObject(ImmutableDictionaryObject.builder() .setGeneralForm("essen") .setDescription("bestimmt") .setLanguage(Language.GERMAN) .build()) .setOutputObject(ImmutableDictionaryObject.builder() .setGeneralForm("eat") .setDescription("bestimmt") .setLanguage(Language.ENGLISH) .build()) .build()) /* The Woxikon website seems to be quite inconsistent with their results. /* These test cases are disabled until each request returns the same response. */ /*.addSimilarRecommendation(ImmutableDictionaryObject.builder() .setGeneralForm("Rasen") .setLanguage(Language.GERMAN).build()) .addSimilarRecommendation(ImmutableDictionaryObject.builder() .setGeneralForm("vessel") .setLanguage(Language.ENGLISH).build())*/ .build()) .build()) .addAutoTestCase(ImmutableAutoTestCase.builder() .setTestQueryString("Tier") .setBilingualTargetDictionary(BilingualDictionary.fromQueryString("de-sv", true)) .setExpectedBilingualResults( ImmutableBilingualQueryResult.builder() .addBilingualEntry(ImmutableBilingualEntry.builder() .setEntryType(EntryType.NOUN) .setInputObject(ImmutableDictionaryObject.builder() .setGeneralForm("Tier") .setDescription("allgemein") .setGrammaticalGender(GrammaticalGender.NEUTER) .setLanguage(Language.GERMAN) .build()) .setOutputObject(ImmutableDictionaryObject.builder() .setGeneralForm("djur") .setDescription("allgemein") .setGrammaticalGender(GrammaticalGender.NEUTER) .setLanguage(Language.SWEDISH) .build()) .build()) .build()) .build()) /* The Woxikon website seems to be quite inconsistent with their results. /* These test cases are disabled until each request returns the same response. */ /*.addAutoTestCase(ImmutableAutoTestCase.builder() .setTestQueryString("bank") .setBilingualTargetDictionary(BilingualDictionary.fromQueryString("de-en", true)) .setExpectedBilingualResults( (BilingualQueryResult) ImmutableBilingualQueryResult.builder() .addSynonymEntry( ImmutableSynonymEntry.builder() //.setBaseEntryType(EntryType.NOUN) .setBaseObject(ImmutableDictionaryObject.createSimpleObject(Language.GERMAN, "Bank")) .addSynonymGroup(ImmutableSynonymGroup.builder() .setBaseMeaning(ImmutableDictionaryObject.createSimpleObject(Language.GERMAN, "Fußbank")) .addSynonym(ImmutableDictionaryObject.builder().setLanguage(Language.GERMAN).setGeneralForm("Schemel").setDescription("Fußbank").build()) .build()) .build() ) .build()) .build() )*/ .build(); } @NotNull @Override public EngineDescription getEngineDescription() { return ImmutableEngineDescription.builder() .setEngineName("Unofficial woxikon.de Engine") .setAuthorName("xolor") .setSearchBackendLink("http://www.woxikon.de/") .setSearchBackendName("woxikon.de") .build(); } @NotNull @Override public FeatureSet getFeatureSet() { return ImmutableFeatureSet.builder() .setProvidesBilingualDictionaryEntries(true) .setProvidesMonolingualEntries(true) .setProvidesAlternatives(true) .setProvidesExternalContent(false) .setSupportsAutoTest(true) .setSupportsFuzzySearch(true) .setProvidesSynonymsOnBilingualQuery(true) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.FRENCH, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.SPANISH, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.SWEDISH, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.RUSSIAN, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.FINNISH, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.TURKISH, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.ENGLISH, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.ITALIAN, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.DUTCH, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.PORTUGUESE, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.POLISH, true)) .addSupportedBilingualDictionary(BilingualDictionary.fromLanguages(Language.GERMAN, Language.NORWEGIAN, true)) .build(); } @NotNull @Override public SearchEngine newEngineInstance() { return new WoxikonEngine(); } }