Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.geekhub</groupId>
<artifactId>SpringTranslator</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>SpringTranslator</name>
<url>http://maven.apache.org</url>

<properties>
<spring.version>4.2.3.RELEASE</spring.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>

</dependencies>

<build>
<finalName>SpringApp</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
1 change: 1 addition & 0 deletions src/com/lang/LanguageDetector.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.util.List;
import java.util.Map;

@Component
public class LanguageDetector {

private Map<Language, List<String>> mapping;
Expand Down
6 changes: 5 additions & 1 deletion src/com/main/AppConfiguration.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
33 changes: 29 additions & 4 deletions src/com/main/Dictionary.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Language, Map<String, String>> dictionaries = new HashMap<Language, Map<String, String>>();

public String translate(String word, Language language) {
//TODO: Implement me
return null;
Map<String, String> dictionary = getDictionary(language);

return dictionary.get(word.toLowerCase())!=null?
dictionary.get(word.toLowerCase()):
word;
}

private Map<String, String> getDictionary(Language language) {
Expand All @@ -27,7 +40,19 @@ private Map<String, String> getDictionary(Language language) {
}

private Map<String, String> loadDictionary(Language language) {
//TODO: Implement me
return null;
Path dictionaryPath = Paths.get("dict/" + language.name().toLowerCase() + ".dict");
List<String> words = new ArrayList<>();
try {
words = Files.readAllLines(dictionaryPath, Charset.defaultCharset());
} catch (IOException e) {
e.printStackTrace();
}
Map<String,String> dictionary = new HashMap<>();
words.stream()
.forEach(word -> {
String[] dictWords = word.split("=",2);
dictionary.put(dictWords[0],dictWords[1]);
});
return dictionary;
}
}
1 change: 1 addition & 0 deletions src/com/main/ResourceLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.ArrayList;
import java.util.List;

@Component
public class ResourceLoader {

public List<String> load(String source) {
Expand Down
14 changes: 12 additions & 2 deletions src/com/main/TextSource.java
Original file line number Diff line number Diff line change
@@ -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<String> loadedLines = resourceLoader.load(path);
return loadedLines.stream().collect(Collectors.joining(" "));
}
}
28 changes: 26 additions & 2 deletions src/com/main/Translator.java
Original file line number Diff line number Diff line change
@@ -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();
}

}