diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..76d8d3a --- /dev/null +++ b/pom.xml @@ -0,0 +1,55 @@ + + 4.0.0 + com.geekhub + SpringTranslator + jar + 1.0-SNAPSHOT + SpringTranslator + http://maven.apache.org + + + 4.2.3.RELEASE + + + + + org.springframework + spring-core + ${spring.version} + + + + org.springframework + spring-context + ${spring.version} + + + + junit + junit + 4.11 + test + + + + commons-logging + commons-logging + 1.1.1 + + + + + + SpringApp + + + maven-compiler-plugin + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/src/com/lang/LanguageDetector.java b/src/com/lang/LanguageDetector.java index 24feb43..0ea3986 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; diff --git a/src/com/main/AppConfiguration.java b/src/com/main/AppConfiguration.java index f3e3f0f..161b7af 100644 --- a/src/com/main/AppConfiguration.java +++ b/src/com/main/AppConfiguration.java @@ -1,11 +1,15 @@ 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 + Translator translator() { + return new Translator(); + } } diff --git a/src/com/main/Dictionary.java b/src/com/main/Dictionary.java index 11890b0..44a1164 100644 --- a/src/com/main/Dictionary.java +++ b/src/com/main/Dictionary.java @@ -4,17 +4,30 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +@Component public class Dictionary { + @Autowired + private ResourceLoader resourceLoader; + private Map> dictionaries = new HashMap>(); public String translate(String word, Language language) { - //TODO: Implement me - return null; + Map dictionary = getDictionary(language); + + return dictionary.get(word.toLowerCase())!=null? + dictionary.get(word.toLowerCase()): + word; } private Map getDictionary(Language language) { @@ -27,7 +40,19 @@ private Map getDictionary(Language language) { } private Map loadDictionary(Language language) { - //TODO: Implement me - return null; + Path dictionaryPath = Paths.get("dict/" + language.name().toLowerCase() + ".dict"); + List words = new ArrayList<>(); + try { + words = Files.readAllLines(dictionaryPath, Charset.defaultCharset()); + } catch (IOException e) { + e.printStackTrace(); + } + Map dictionary = new HashMap<>(); + words.stream() + .forEach(word -> { + String[] dictWords = word.split("=",2); + dictionary.put(dictWords[0],dictWords[1]); + }); + return dictionary; } } diff --git a/src/com/main/ResourceLoader.java b/src/com/main/ResourceLoader.java index 02a2435..afe471d 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) { diff --git a/src/com/main/TextSource.java b/src/com/main/TextSource.java index 77b4eb7..cc1e7b1 100644 --- a/src/com/main/TextSource.java +++ b/src/com/main/TextSource.java @@ -1,9 +1,19 @@ package com.main; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; + +@Component public class TextSource { + @Autowired + private ResourceLoader resourceLoader; + public String getText(String path) { - //TODO: Implement me - return null; + List loadedLines = resourceLoader.load(path); + return loadedLines.stream().collect(Collectors.joining(" ")); } } diff --git a/src/com/main/Translator.java b/src/com/main/Translator.java index 48c4dad..691f8ff 100644 --- a/src/com/main/Translator.java +++ b/src/com/main/Translator.java @@ -1,14 +1,38 @@ 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; +import java.util.StringJoiner; +@Component public class Translator { + private static String WORD_DELIMITER = " "; + + @Autowired + private TextSource textSource; + + @Autowired + private Dictionary dictionary; + + @Autowired + private LanguageDetector languageDetector; + public String translate(String source) { - //TODO: Implement me - return null; + String text = textSource.getText(source); + Language fromLanguage = languageDetector.detectLanguage(text); + String[] words = text.split(WORD_DELIMITER); + StringJoiner translatedText = new StringJoiner(WORD_DELIMITER); + for (String word:words){ + String punctuation = word.replaceAll("[^\\W]|_", ""); + String translatedWord = dictionary.translate(word.replaceAll("[\\W]|_", ""),fromLanguage); + translatedText.add(translatedWord+punctuation); + } + return translatedText.toString(); } }