diff --git a/dict/russian.dict b/dict/russian.dict new file mode 100644 index 0000000..8b6eae2 --- /dev/null +++ b/dict/russian.dict @@ -0,0 +1,4 @@ +o=про +снова=знову +все=всі +всегда=завжди diff --git a/src/com/lang/LanguageDetector.java b/src/com/lang/LanguageDetector.java index 24feb43..ee863c0 100644 --- a/src/com/lang/LanguageDetector.java +++ b/src/com/lang/LanguageDetector.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; +@Component public class LanguageDetector { private Map> mapping; @@ -21,6 +22,6 @@ public Language detectLanguage(String text) { } private void initMapping() { - mapping = new HashMap>(); + mapping = new HashMap<>(); } } diff --git a/src/com/main/AppConfiguration.java b/src/com/main/AppConfiguration.java index f3e3f0f..56b7b0e 100644 --- a/src/com/main/AppConfiguration.java +++ b/src/com/main/AppConfiguration.java @@ -1,11 +1,10 @@ package com.main; -import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Scope; @Configuration +@ComponentScan("com") public class AppConfiguration { - //TODO: Implement me } diff --git a/src/com/main/Dictionary.java b/src/com/main/Dictionary.java index 11890b0..e0fcd9c 100644 --- a/src/com/main/Dictionary.java +++ b/src/com/main/Dictionary.java @@ -8,13 +8,20 @@ import java.util.List; import java.util.Map; +@Component public class Dictionary { - private Map> dictionaries = new HashMap>(); + @Autowired + ResourceLoader resourceLoader; + + private Map> dictionaries = new HashMap<>(); public String translate(String word, Language language) { - //TODO: Implement me - return null; + Map dictionary = getDictionary(language); + word = word.replaceAll("\\p{Punct}", ""); + String translation = dictionary.get(word); + return translation == null ? word : translation; + } private Map getDictionary(Language language) { @@ -27,7 +34,13 @@ private Map getDictionary(Language language) { } private Map loadDictionary(Language language) { - //TODO: Implement me - return null; + Map dictionary = new HashMap<>(); + List lines = resourceLoader.load("dict/" + language.name().toLowerCase() + ".dict"); + for (String line : lines) { + String[] words = line.split("="); + dictionary.put(words[0], words[1]); + } + + return dictionary; } } diff --git a/src/com/main/Main.java b/src/com/main/Main.java index 139a2f1..739469b 100644 --- a/src/com/main/Main.java +++ b/src/com/main/Main.java @@ -3,7 +3,6 @@ import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.support.FileSystemXmlApplicationContext; public class Main { public static void main(String[] args) throws BeansException { diff --git a/src/com/main/ResourceLoader.java b/src/com/main/ResourceLoader.java index 02a2435..bb880bb 100644 --- a/src/com/main/ResourceLoader.java +++ b/src/com/main/ResourceLoader.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; +@Component public class ResourceLoader { public List load(String source) { @@ -17,6 +18,6 @@ public List load(String source) { } catch (IOException e) { e.printStackTrace(); } - return new ArrayList(); + return new ArrayList<>(); } } diff --git a/src/com/main/TextSource.java b/src/com/main/TextSource.java index 77b4eb7..674a97a 100644 --- a/src/com/main/TextSource.java +++ b/src/com/main/TextSource.java @@ -1,9 +1,21 @@ package com.main; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component public class TextSource { + @Autowired + ResourceLoader resourceLoader; + public String getText(String path) { - //TODO: Implement me - return null; + StringBuilder sb = new StringBuilder(); + + for (String line : resourceLoader.load(path)) { + sb.append(line); + } + + return sb.toString(); } } diff --git a/src/com/main/Translator.java b/src/com/main/Translator.java index 48c4dad..2654660 100644 --- a/src/com/main/Translator.java +++ b/src/com/main/Translator.java @@ -1,14 +1,36 @@ package com.main; +import com.lang.Language; +import com.lang.LanguageDetector; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.annotation.PostConstruct; - +@Component public class Translator { - public String translate(String source) { - //TODO: Implement me - return null; + TextSource textSource; + LanguageDetector languageDetector; + Dictionary dictionary; + + @Autowired + public Translator(TextSource textSource, LanguageDetector languageDetector, Dictionary dictionary) { + this.textSource = textSource; + this.languageDetector = languageDetector; + this.dictionary = dictionary; + } + + public String translate(String source) { + StringBuilder translatedText = new StringBuilder(); + String text = textSource.getText(source); + Language language = languageDetector.detectLanguage(text); + + for (String word : text.split("\\s+")) { + translatedText + .append(dictionary.translate(word.trim(), language)) + .append(" "); + } + + return translatedText.toString(); } }