summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/translation/Translator.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/translation/Translator.java')
-rw-r--r--src/main/java/cuchaz/enigma/translation/Translator.java61
1 files changed, 0 insertions, 61 deletions
diff --git a/src/main/java/cuchaz/enigma/translation/Translator.java b/src/main/java/cuchaz/enigma/translation/Translator.java
deleted file mode 100644
index c70141f2..00000000
--- a/src/main/java/cuchaz/enigma/translation/Translator.java
+++ /dev/null
@@ -1,61 +0,0 @@
1/*******************************************************************************
2 * Copyright (c) 2015 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser General Public
5 * License v3.0 which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/lgpl.html
7 * <p>
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11
12package cuchaz.enigma.translation;
13
14import com.google.common.collect.HashMultimap;
15import com.google.common.collect.Multimap;
16
17import java.util.Collection;
18import java.util.HashMap;
19import java.util.Map;
20import java.util.Set;
21import java.util.stream.Collectors;
22
23public interface Translator {
24 <T extends Translatable> T translate(T translatable);
25
26 default <T extends Translatable> Collection<T> translate(Collection<T> translatable) {
27 return translatable.stream()
28 .map(this::translate)
29 .collect(Collectors.toList());
30 }
31
32 default <T extends Translatable> Set<T> translate(Set<T> translatable) {
33 return translatable.stream()
34 .map(this::translate)
35 .collect(Collectors.toSet());
36 }
37
38 default <T extends Translatable, V> Map<T, V> translateKeys(Map<T, V> translatable) {
39 Map<T, V> result = new HashMap<>(translatable.size());
40 for (Map.Entry<T, V> entry : translatable.entrySet()) {
41 result.put(translate(entry.getKey()), entry.getValue());
42 }
43 return result;
44 }
45
46 default <K extends Translatable, V extends Translatable> Map<K, V> translate(Map<K, V> translatable) {
47 Map<K, V> result = new HashMap<>(translatable.size());
48 for (Map.Entry<K, V> entry : translatable.entrySet()) {
49 result.put(translate(entry.getKey()), translate(entry.getValue()));
50 }
51 return result;
52 }
53
54 default <K extends Translatable, V extends Translatable> Multimap<K, V> translate(Multimap<K, V> translatable) {
55 Multimap<K, V> result = HashMultimap.create(translatable.size(), 1);
56 for (Map.Entry<K, Collection<V>> entry : translatable.asMap().entrySet()) {
57 result.putAll(translate(entry.getKey()), translate(entry.getValue()));
58 }
59 return result;
60 }
61}