From a7a1ca0efa46f71ecc144f5877af75dc6c8e5246 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Fri, 8 Oct 2021 10:13:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20Messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ghast/Messages.java | 111 +++++++++++++++--------------- 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/src/main/java/ghast/Messages.java b/src/main/java/ghast/Messages.java index 9856f31..1f6e299 100644 --- a/src/main/java/ghast/Messages.java +++ b/src/main/java/ghast/Messages.java @@ -1,6 +1,7 @@ package ghast; -import lombok.experimental.UtilityClass; +import lombok.AccessLevel; +import lombok.RequiredArgsConstructor; import org.apache.commons.text.StringSubstitutor; import java.io.BufferedReader; @@ -9,57 +10,12 @@ import java.io.Reader; import java.util.HashMap; import java.util.Map; import java.util.Properties; +import java.util.stream.Collectors; -@UtilityClass +@RequiredArgsConstructor(access = AccessLevel.PRIVATE) public class Messages { - private final Map MESSAGES_MAP = new HashMap<>(); - - //region Load messages - - /** - * Загрузка сообщений из {@link Properties} - * - * @param properties список сообщений и шаблонов - */ - public void load(Properties properties) { - MESSAGES_MAP.clear(); - properties.forEach((key, value) -> MESSAGES_MAP.put(key.toString().trim().toLowerCase(), value.toString().trim())); - } - - /** - * Загрузка сообщений из {@link Reader}. - *

- * Формат строк: {@code key=value} - *

- * - * @param reader {@link Reader} со списоком сообщений и шаблонов - */ - public void load(Reader reader) { - MESSAGES_MAP.clear(); - try { - BufferedReader bufferedReader = new BufferedReader(reader); - String line; - while ((line = bufferedReader.readLine()) != null) { - String[] split = line.split("=", 2); - MESSAGES_MAP.put(split[0].trim().toLowerCase(), split[1].trim()); - } - } catch (IOException e) { - //TODO заменить на специализированный Exception - throw new RuntimeException("Error load messages: " + e.getMessage(), e); - } - } - - /** - * Загрузка сообщений из {@link Map}<{@link String}, {@link String}>. - * - * @param messages список сообщений и шаблонов - */ - public void load(Map messages) { - MESSAGES_MAP.clear(); - MESSAGES_MAP.putAll(messages); - } - //endregion + private final Map messagesMap; //region Get messages /** @@ -70,7 +26,7 @@ public class Messages { */ public String get(String key) { String keyLc = key.toLowerCase(); - return MESSAGES_MAP.getOrDefault(keyLc, keyLc); + return messagesMap.getOrDefault(keyLc, keyLc); } /** @@ -83,8 +39,8 @@ public class Messages { public String get(String key, Map params) { String keyLc = key.toLowerCase(); - if (MESSAGES_MAP.containsKey(keyLc)) { - return format(MESSAGES_MAP.get(keyLc), params); + if (messagesMap.containsKey(keyLc)) { + return format(messagesMap.get(keyLc), params); } else { return keyLc; } @@ -100,8 +56,8 @@ public class Messages { public String get(String key, Object... params) { String keyLc = key.toLowerCase(); - if (MESSAGES_MAP.containsKey(keyLc)) { - return format(MESSAGES_MAP.get(keyLc), params); + if (messagesMap.containsKey(keyLc)) { + return format(messagesMap.get(keyLc), params); } else { return keyLc; } @@ -147,4 +103,51 @@ public class Messages { return map; } + + /** + * Загрузка сообщений из {@link Properties} + * + * @param properties список сообщений и шаблонов + * @return экземпляр {@link Messages} + */ + public static Messages load(Properties properties) { + Map map = properties.entrySet().stream().collect(Collectors.toMap( + entry -> (String) entry.getKey(), + entry -> (String) entry.getValue() + )); + + return new Messages(map); + } + + /** + * Загрузка сообщений из {@link Reader}. + *

+ * Формат строк: {@code key=value} + *

+ * + * @param reader {@link Reader} со списоком сообщений и шаблонов + */ + public static Messages load(Reader reader) { + try(BufferedReader bufferedReader = new BufferedReader(reader)) { + Map map = bufferedReader.lines() + .map(line -> line.split("=", 2)) + .collect(Collectors.toMap( + pair -> pair[0].trim().toLowerCase(), + pair -> pair[1].trim() + )); + return new Messages(map); + } catch (IOException e) { + //TODO заменить на специализированный Exception + throw new RuntimeException("Error load messages: " + e.getMessage(), e); + } + } + + /** + * Загрузка сообщений из {@link Map}<{@link String}, {@link String}>. + * + * @param messages список сообщений и шаблонов + */ + public static Messages load(Map messages) { + return new Messages(new HashMap<>(messages)); + } }