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();
}
}