#293 Create class for handling messages from file with fallback

- Move logic for loading a messages file with a default fallback into one class
- Remove message-specific handling from Settings class
This commit is contained in:
ljacqu
2016-10-07 22:28:08 +02:00
parent d78b7cc4af
commit 26716b0f79
11 changed files with 385 additions and 312 deletions
@@ -6,8 +6,6 @@ import com.github.authme.configme.migration.MigrationService;
import com.github.authme.configme.resource.PropertyResource;
import com.google.common.io.Files;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.settings.properties.PluginSettings;
import fr.xephi.authme.util.FileUtils;
import java.io.File;
import java.io.IOException;
@@ -22,8 +20,6 @@ import static fr.xephi.authme.util.FileUtils.copyFileFromResource;
public class Settings extends SettingsManager {
private final File pluginFolder;
/** The file with the localized messages based on {@link PluginSettings#MESSAGES_LANGUAGE}. */
private File messagesFile;
private String[] welcomeMessage;
private String passwordEmailMessage;
private String recoveryCodeEmailMessage;
@@ -43,24 +39,6 @@ public class Settings extends SettingsManager {
loadSettingsFromFiles();
}
/**
* Return the messages file based on the messages language config.
*
* @return The messages file to read messages from
*/
public File getMessagesFile() {
return messagesFile;
}
/**
* Return the path to the default messages file within the JAR.
*
* @return The default messages file path
*/
public String getDefaultMessagesFile() {
return "/messages/messages_en.yml";
}
/**
* Return the text to use in email registrations.
*
@@ -89,7 +67,6 @@ public class Settings extends SettingsManager {
}
private void loadSettingsFromFiles() {
messagesFile = buildMessagesFile();
passwordEmailMessage = readFile("email.html");
recoveryCodeEmailMessage = readFile("recovery_code_email.html");
welcomeMessage = readFile("welcome.txt").split("\n");
@@ -101,28 +78,6 @@ public class Settings extends SettingsManager {
loadSettingsFromFiles();
}
private File buildMessagesFile() {
String languageCode = getProperty(PluginSettings.MESSAGES_LANGUAGE);
String filePath = buildMessagesFilePathFromCode(languageCode);
File messagesFile = new File(pluginFolder, filePath);
if (copyFileFromResource(messagesFile, filePath)) {
return messagesFile;
}
// File doesn't exist or couldn't be copied - try again with default, "en"
String defaultFilePath = buildMessagesFilePathFromCode("en");
File defaultFile = new File(pluginFolder, defaultFilePath);
copyFileFromResource(defaultFile, defaultFilePath);
// No matter the result, need to return a file
return defaultFile;
}
private static String buildMessagesFilePathFromCode(String language) {
return FileUtils.makePath("messages", "messages_" + language + ".yml");
}
/**
* Reads a file from the plugin folder or copies it from the JAR to the plugin folder.
*