From e8692160c53b545b6bcbc2d6127b071a43b5caf6 Mon Sep 17 00:00:00 2001 From: ljacqu Date: Sun, 11 Dec 2016 10:31:49 +0100 Subject: [PATCH] Remove unused import/export messages tool tasks --- .../translation/AuthMeYamlConfiguration.java | 58 --------- .../translation/ExportMessagesTask.java | 106 ---------------- .../translation/ImportMessagesTask.java | 116 ------------------ .../messages/translation/LanguageExport.java | 19 --- .../messages/translation/MessageExport.java | 20 --- .../translation/WriteAllExportsTask.java | 35 ------ .../translation/export/export-is-written-here | 0 7 files changed, 354 deletions(-) delete mode 100644 src/test/java/tools/messages/translation/AuthMeYamlConfiguration.java delete mode 100644 src/test/java/tools/messages/translation/ExportMessagesTask.java delete mode 100644 src/test/java/tools/messages/translation/ImportMessagesTask.java delete mode 100644 src/test/java/tools/messages/translation/LanguageExport.java delete mode 100644 src/test/java/tools/messages/translation/MessageExport.java delete mode 100644 src/test/java/tools/messages/translation/WriteAllExportsTask.java delete mode 100644 src/test/java/tools/messages/translation/export/export-is-written-here diff --git a/src/test/java/tools/messages/translation/AuthMeYamlConfiguration.java b/src/test/java/tools/messages/translation/AuthMeYamlConfiguration.java deleted file mode 100644 index 21564b57..00000000 --- a/src/test/java/tools/messages/translation/AuthMeYamlConfiguration.java +++ /dev/null @@ -1,58 +0,0 @@ -package tools.messages.translation; - -import org.bukkit.configuration.InvalidConfigurationException; -import org.bukkit.configuration.file.YamlConfiguration; -import org.yaml.snakeyaml.DumperOptions; -import org.yaml.snakeyaml.Yaml; - -import java.io.File; -import java.io.IOException; -import java.util.regex.Pattern; - -/** - * Extension of {@link YamlConfiguration} to customize the writing style. - */ -public class AuthMeYamlConfiguration extends YamlConfiguration { - - // Differences to YamlConfiguration: Texts are always in single quotes - // and line breaks are only applied after 200 chars - @Override - public String saveToString() { - DumperOptions options = new DumperOptions(); - options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); - options.setDefaultScalarStyle(DumperOptions.ScalarStyle.SINGLE_QUOTED); - options.setPrettyFlow(true); - options.setWidth(200); - Yaml yaml = new Yaml(options); - - String header = buildHeader(); - String dump = yaml.dump(getValues(false)); - - if (dump.equals(BLANK_CONFIG)) { - dump = ""; - } - // By setting the scalar style to SINGLE_QUOTED both keys and values will be enclosed in single quotes. - // We want all texts wrapped in single quotes, but not the keys. Seems like this is not possible in SnakeYAML - dump = Pattern.compile("^'([a-zA-Z0-9-_]+)': ", Pattern.MULTILINE) - .matcher(dump).replaceAll("$1: "); - - return header + dump; - } - - /** - * Behaves similarly to {@link YamlConfiguration#loadConfiguration(File)} but returns an object - * of this class instead. - * - * @param file the file to load - * @return the constructed AuthMeYamlConfiguration instance - */ - public static AuthMeYamlConfiguration loadConfiguration(File file) { - AuthMeYamlConfiguration config = new AuthMeYamlConfiguration(); - try { - config.load(file); - } catch (IOException | InvalidConfigurationException ex) { - throw new IllegalStateException(ex); - } - return config; - } -} diff --git a/src/test/java/tools/messages/translation/ExportMessagesTask.java b/src/test/java/tools/messages/translation/ExportMessagesTask.java deleted file mode 100644 index 7ea2a419..00000000 --- a/src/test/java/tools/messages/translation/ExportMessagesTask.java +++ /dev/null @@ -1,106 +0,0 @@ -package tools.messages.translation; - -import com.google.common.io.CharStreams; -import com.google.gson.Gson; -import fr.xephi.authme.message.MessageKey; -import fr.xephi.authme.util.StringUtils; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import tools.utils.ToolTask; -import tools.utils.ToolsConstants; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -/** - * Task to export a language's messages to the remote translation service. - */ -public class ExportMessagesTask implements ToolTask { - - /** The folder containing the messages files. */ - protected static final String MESSAGES_FOLDER = ToolsConstants.MAIN_RESOURCES_ROOT + "messages/"; - /** The remote URL to send an updated file to. */ - private static final String UPDATE_URL = "http://jalu.ch/ext/authme/update.php"; - private final Gson gson = new Gson(); - - @Override - public String getTaskName() { - return "exportMessages"; - } - - @Override - public void execute(Scanner scanner) { - System.out.println("Enter language code of messages to export:"); - String languageCode = scanner.nextLine().trim(); - - File file = new File(MESSAGES_FOLDER + "messages_" + languageCode + ".yml"); - if (!file.exists()) { - throw new IllegalStateException("File '" + file.getAbsolutePath() + "' does not exist"); - } - - FileConfiguration configuration = YamlConfiguration.loadConfiguration(file); - String json = convertToJson(languageCode, loadDefaultMessages(), configuration); - - String result = sendJsonToRemote(languageCode, json); - System.out.println("Answer: " + result); - } - - protected String convertToJson(String code, FileConfiguration defaultMessages, FileConfiguration messageFile) { - List list = new ArrayList<>(); - for (MessageKey key : MessageKey.values()) { - list.add(new MessageExport(key.getKey(), key.getTags(), getString(key, defaultMessages), - getString(key, messageFile))); - } - - return gson.toJson(new LanguageExport(code, list)); - } - - protected FileConfiguration loadDefaultMessages() { - return YamlConfiguration.loadConfiguration(new File(MESSAGES_FOLDER + "messages_en.yml")); - } - - private static String getString(MessageKey key, FileConfiguration configuration) { - return configuration.getString(key.getKey(), ""); - } - - private static String sendJsonToRemote(String language, String json) { - try { - String encodedData = "file=" + URLEncoder.encode(json, "UTF-8") - + "&language=" + URLEncoder.encode(language, "UTF-8"); - - URL url = new URL(UPDATE_URL); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setDoOutput(true); - conn.setRequestMethod("POST"); - conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - conn.setRequestProperty("Content-Length", String.valueOf(encodedData.length())); - OutputStream os = conn.getOutputStream(); - os.write(encodedData.getBytes()); - os.flush(); - os.close(); - - return "Response code: " + conn.getResponseCode() - + "\n" + inputStreamToString(conn.getInputStream()); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - private static String inputStreamToString(InputStream is) { - try (InputStreamReader isr = new InputStreamReader(is)) { - return CharStreams.toString(isr); - } catch (IOException e) { - return "Failed to read output - " + StringUtils.formatException(e); - } - } - -} diff --git a/src/test/java/tools/messages/translation/ImportMessagesTask.java b/src/test/java/tools/messages/translation/ImportMessagesTask.java deleted file mode 100644 index 765c49f1..00000000 --- a/src/test/java/tools/messages/translation/ImportMessagesTask.java +++ /dev/null @@ -1,116 +0,0 @@ -package tools.messages.translation; - -import com.google.common.io.Resources; -import com.google.gson.Gson; -import fr.xephi.authme.message.MessageKey; -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import tools.messages.MessageFileVerifier; -import tools.messages.VerifyMessagesTask; -import tools.utils.FileIoUtils; -import tools.utils.ToolTask; -import tools.utils.ToolsConstants; - -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.HashSet; -import java.util.Scanner; -import java.util.Set; -import java.util.regex.Pattern; - -/** - * Imports a message file from a remote JSON export and validates the resulting file. - *

- * Comments at the top of an existing file should remain after the import, but it is important - * to verify that no unwanted changes have been applied to the file. Note that YAML comments - * tend to disappear if there is no space between the # and the first character. - */ -public class ImportMessagesTask implements ToolTask { - - private static final String MESSAGES_FOLDER = ToolsConstants.MAIN_RESOURCES_ROOT + "messages/"; - private Gson gson = new Gson(); - private Set messageCodes; - - @Override - public String getTaskName() { - return "importMessages"; - } - - @Override - public void execute(Scanner scanner) { - System.out.println("Enter URL to import from"); - // Dirty trick: replace https:// with http:// so we don't have to worry about installing certificates... - String url = scanner.nextLine().replace("https://", "http://"); - - LanguageExport languageExport = getLanguageExportFromUrl(url); - if (languageExport == null) { - throw new IllegalStateException("An error occurred: constructed language export is null"); - } - - mergeExportIntoFile(languageExport); - System.out.println("Saved to messages file for code '" + languageExport.code + "'"); - } - - private LanguageExport getLanguageExportFromUrl(String location) { - try { - URL url = new URL(location); - String json = Resources.toString(url, StandardCharsets.UTF_8); - return gson.fromJson(json, LanguageExport.class); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - private void mergeExportIntoFile(LanguageExport export) { - String languageCode = export.code; - String fileName = MESSAGES_FOLDER + "messages_" + languageCode + ".yml"; - File file = new File(fileName); - FileConfiguration fileConfiguration; - if (file.exists()) { - removeAllTodoComments(fileName); - fileConfiguration = AuthMeYamlConfiguration.loadConfiguration(file); - } else { - fileConfiguration = new AuthMeYamlConfiguration(); - } - - buildMessageCodeList(); - for (MessageExport messageExport : export.messages) { - if (!messageCodes.contains(messageExport.key)) { - throw new IllegalStateException("Message key '" + messageExport.key + "' does not exist"); - } else if (!messageExport.translatedMessage.isEmpty()) { - fileConfiguration.set(messageExport.key, messageExport.translatedMessage); - } - } - try { - fileConfiguration.save(file); - } catch (IOException e) { - throw new IllegalStateException(e); - } - - MessageFileVerifier verifier = new MessageFileVerifier(file); - VerifyMessagesTask.verifyFileAndAddKeys(verifier, YamlConfiguration.loadConfiguration( - new File(MESSAGES_FOLDER + "messages_en.yml"))); - } - - private void buildMessageCodeList() { - messageCodes = new HashSet<>(MessageKey.values().length); - for (MessageKey messageKey : MessageKey.values()) { - messageCodes.add(messageKey.getKey()); - } - } - - /** - * Removes all to-do comments written by {@link VerifyMessagesTask}. This is helpful as the YamlConfiguration - * moves those comments otherwise upon saving. - * - * @param file The file whose to-do comments should be removed - */ - private static void removeAllTodoComments(String file) { - String contents = FileIoUtils.readFromFile(file); - String regex = "^# TODO .*$"; - contents = Pattern.compile(regex, Pattern.MULTILINE).matcher(contents).replaceAll(""); - FileIoUtils.writeToFile(file, contents); - } -} diff --git a/src/test/java/tools/messages/translation/LanguageExport.java b/src/test/java/tools/messages/translation/LanguageExport.java deleted file mode 100644 index c15a54bd..00000000 --- a/src/test/java/tools/messages/translation/LanguageExport.java +++ /dev/null @@ -1,19 +0,0 @@ -package tools.messages.translation; - -import java.util.Collections; -import java.util.List; - -/** - * Export of a language's messages. - */ -public class LanguageExport { - - public final String code; - public final List messages; - - public LanguageExport(String code, List messages) { - this.code = code; - this.messages = Collections.unmodifiableList(messages); - } - -} diff --git a/src/test/java/tools/messages/translation/MessageExport.java b/src/test/java/tools/messages/translation/MessageExport.java deleted file mode 100644 index 1b37347c..00000000 --- a/src/test/java/tools/messages/translation/MessageExport.java +++ /dev/null @@ -1,20 +0,0 @@ -package tools.messages.translation; - -/** - * Container class for one translatable message. - */ -public class MessageExport { - - public final String key; - public final String tags; - public final String defaultMessage; - public final String translatedMessage; - - public MessageExport(String key, String[] tags, String defaultMessage, String translatedMessage) { - this.key = key; - this.tags = String.join(",", tags); - this.defaultMessage = defaultMessage; - this.translatedMessage = translatedMessage; - } - -} diff --git a/src/test/java/tools/messages/translation/WriteAllExportsTask.java b/src/test/java/tools/messages/translation/WriteAllExportsTask.java deleted file mode 100644 index f59d31ef..00000000 --- a/src/test/java/tools/messages/translation/WriteAllExportsTask.java +++ /dev/null @@ -1,35 +0,0 @@ -package tools.messages.translation; - -import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.configuration.file.YamlConfiguration; -import tools.utils.FileIoUtils; -import tools.utils.ToolsConstants; - -import java.io.File; -import java.util.Scanner; - -import static tools.utils.FileIoUtils.listFilesOrThrow; - -/** - * Task which exports all messages to a local folder. - */ -public class WriteAllExportsTask extends ExportMessagesTask { - - private static final String OUTPUT_FOLDER = ToolsConstants.TOOLS_SOURCE_ROOT + "messages/translation/export/"; - - @Override - public String getTaskName() { - return "writeAllExports"; - } - - @Override - public void execute(Scanner scanner) { - final File[] messageFiles = listFilesOrThrow(new File(MESSAGES_FOLDER)); - final FileConfiguration defaultMessages = loadDefaultMessages(); - for (File file : messageFiles) { - String code = file.getName().substring("messages_".length(), file.getName().length() - ".yml".length()); - String json = convertToJson(code, defaultMessages, YamlConfiguration.loadConfiguration(file)); - FileIoUtils.writeToFile(OUTPUT_FOLDER + "messages_" + code + ".json", json); - } - } -} diff --git a/src/test/java/tools/messages/translation/export/export-is-written-here b/src/test/java/tools/messages/translation/export/export-is-written-here deleted file mode 100644 index e69de29b..00000000