diff --git a/src/com/enums/Language.java b/src/com/enums/Language.java new file mode 100644 index 0000000..0fdb1be --- /dev/null +++ b/src/com/enums/Language.java @@ -0,0 +1,5 @@ +package com.enums; + +public enum Language { + ENGLISH, RUSSIAN; +} diff --git a/src/com/lang/Language.java b/src/com/lang/Language.java deleted file mode 100644 index 11967b9..0000000 --- a/src/com/lang/Language.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.lang; - -public enum Language { - ENGLISH, RUSSIAN; -} diff --git a/src/com/lang/LanguageDetector.java b/src/com/lang/LanguageDetector.java index 24feb43..8d3195b 100644 --- a/src/com/lang/LanguageDetector.java +++ b/src/com/lang/LanguageDetector.java @@ -1,26 +1,28 @@ package com.lang; +import com.enums.Language; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.List; import java.util.Map; +@Component public class LanguageDetector { - private Map> mapping; + private Map> mapping; - public Language detectLanguage(String text) { - if (mapping == null) { - initMapping(); - } - for (Language language : mapping.keySet()) { - //Some weird logic to detect language - } - return Language.ENGLISH; - } + public Language detectLanguage(String text) { + if (mapping == null) { + initMapping(); + } + for (Language language : mapping.keySet()) { + //Some weird logic to detect language + } + return Language.ENGLISH; + } - private void initMapping() { - mapping = new HashMap>(); - } + private void initMapping() { + mapping = new HashMap>(); + } } diff --git a/src/com/main/AppConfiguration.java b/src/com/main/AppConfiguration.java index f3e3f0f..8835f5d 100644 --- a/src/com/main/AppConfiguration.java +++ b/src/com/main/AppConfiguration.java @@ -1,11 +1,16 @@ 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 + @Bean + Translator translator() { + return new Translator(); + } + } diff --git a/src/com/main/Dictionary.java b/src/com/main/Dictionary.java index 11890b0..54ea933 100644 --- a/src/com/main/Dictionary.java +++ b/src/com/main/Dictionary.java @@ -1,6 +1,6 @@ package com.main; -import com.lang.Language; +import com.enums.Language; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -8,26 +8,36 @@ import java.util.List; import java.util.Map; +@Component public class Dictionary { - private Map> dictionaries = new HashMap>(); - - public String translate(String word, Language language) { - //TODO: Implement me - return null; - } - - private Map getDictionary(Language language) { - Map dictionary = dictionaries.get(language); - if (null == dictionary) { - dictionary = loadDictionary(language); - dictionaries.put(language, dictionary); - } - return dictionary; - } - - private Map loadDictionary(Language language) { - //TODO: Implement me - return null; - } + @Autowired + ResourceLoader resourceLoader; + + private Map> dictionaries = new HashMap>(); + + public String translate(String word, Language language) { + Map dictionary = getDictionary(language); + String translation = dictionary.get(word); + return dictionary.get(word) != null ? translation : word; + } + + private Map getDictionary(Language language) { + Map dictionary = dictionaries.get(language); + if (null == dictionary) { + dictionary = loadDictionary(language); + dictionaries.put(language, dictionary); + } + return dictionary; + } + + private Map loadDictionary(Language language) { + Map dictionary = new HashMap<>(); + List stringList = resourceLoader.load("dict/" + language.toString().toLowerCase() + ".dict"); + for (String line : stringList) { + String[] split = line.split("="); + dictionary.put(split[0].replace("\uFEFF", ""), split[1]); + } + return dictionary; + } } diff --git a/src/com/main/Main.java b/src/com/main/Main.java index 139a2f1..e0375f6 100644 --- a/src/com/main/Main.java +++ b/src/com/main/Main.java @@ -3,14 +3,13 @@ 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 { + public static void main(String[] args) throws BeansException { ApplicationContext context = new AnnotationConfigApplicationContext(AppConfiguration.class); Translator translator = context.getBean(Translator.class); - String translation = translator.translate("d:/1.txt"); - System.out.println(translation); - } + String translation = translator.translate("d:/test.txt"); + System.out.println(translation); + } } diff --git a/src/com/main/ResourceLoader.java b/src/com/main/ResourceLoader.java index 02a2435..984b4d1 100644 --- a/src/com/main/ResourceLoader.java +++ b/src/com/main/ResourceLoader.java @@ -9,14 +9,15 @@ import java.util.ArrayList; import java.util.List; +@Component public class ResourceLoader { - public List load(String source) { - try { - return Files.readAllLines(Paths.get(source), Charset.defaultCharset()); - } catch (IOException e) { - e.printStackTrace(); - } - return new ArrayList(); - } + public List load(String source) { + try { + return Files.readAllLines(Paths.get(source), Charset.defaultCharset()); + } catch (IOException e) { + e.printStackTrace(); + } + return new ArrayList<>(); + } } diff --git a/src/com/main/TextSource.java b/src/com/main/TextSource.java index 77b4eb7..964ff9d 100644 --- a/src/com/main/TextSource.java +++ b/src/com/main/TextSource.java @@ -1,9 +1,20 @@ package com.main; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component public class TextSource { - public String getText(String path) { - //TODO: Implement me - return null; - } + @Autowired + ResourceLoader resourceLoader; + + public String getText(String path) { + StringBuilder stringBuilder = new StringBuilder(); + for (String line : resourceLoader.load(path)) { + stringBuilder.append(line).append("\n"); + } + return stringBuilder.toString(); + } + } diff --git a/src/com/main/Translator.java b/src/com/main/Translator.java index 48c4dad..2b03ce7 100644 --- a/src/com/main/Translator.java +++ b/src/com/main/Translator.java @@ -1,14 +1,28 @@ package com.main; +import com.enums.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 { + @Autowired + LanguageDetector languageDetector; + @Autowired + Dictionary dictionary; + @Autowired + TextSource textSource; + public String translate(String source) { - //TODO: Implement me - return null; - } + String text = textSource.getText(source); + Language language = languageDetector.detectLanguage(text); + StringBuilder translation = new StringBuilder(); + for (String word : text.split("\\W")) { + translation.append(dictionary.translate(word, language)).append(" "); + } + return translation.toString(); + } }