diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/translation/Translator.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/translation/Translator.java | 61 |
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 | |||
| 12 | package cuchaz.enigma.translation; | ||
| 13 | |||
| 14 | import com.google.common.collect.HashMultimap; | ||
| 15 | import com.google.common.collect.Multimap; | ||
| 16 | |||
| 17 | import java.util.Collection; | ||
| 18 | import java.util.HashMap; | ||
| 19 | import java.util.Map; | ||
| 20 | import java.util.Set; | ||
| 21 | import java.util.stream.Collectors; | ||
| 22 | |||
| 23 | public 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 | } | ||