* #1874 Introduce individual ConsoleLogger instance per class - Create ConsoleLoggerFactory from which a separate logger can be created for each class - Allows to support individual log level settings in the future * Fix CodeStyle issue * Replace full class name with import * Update usages after merge from master
68 lines
2.1 KiB
Java
68 lines
2.1 KiB
Java
package fr.xephi.authme.message;
|
|
|
|
import fr.xephi.authme.ConsoleLogger;
|
|
import fr.xephi.authme.output.ConsoleLoggerFactory;
|
|
import fr.xephi.authme.util.FileUtils;
|
|
import org.bukkit.configuration.file.FileConfiguration;
|
|
import org.bukkit.configuration.file.YamlConfiguration;
|
|
|
|
import javax.inject.Inject;
|
|
import java.io.InputStream;
|
|
import java.io.InputStreamReader;
|
|
|
|
import static fr.xephi.authme.message.MessagePathHelper.DEFAULT_LANGUAGE;
|
|
|
|
/**
|
|
* File handler for the help_xx.yml resource.
|
|
*/
|
|
public class HelpMessagesFileHandler extends AbstractMessageFileHandler {
|
|
|
|
private final ConsoleLogger logger = ConsoleLoggerFactory.get(HelpMessagesFileHandler.class);
|
|
|
|
private FileConfiguration defaultConfiguration;
|
|
|
|
@Inject // Trigger injection in the superclass
|
|
HelpMessagesFileHandler() {
|
|
}
|
|
|
|
/**
|
|
* Returns the message for the given key.
|
|
*
|
|
* @param key the key to retrieve the message for
|
|
* @return the message
|
|
*/
|
|
@Override
|
|
public String getMessage(String key) {
|
|
String message = getMessageIfExists(key);
|
|
|
|
if (message == null) {
|
|
logger.warning("Error getting message with key '" + key + "'. "
|
|
+ "Please update your config file '" + getFilename() + "' or run /authme messages help");
|
|
return getDefault(key);
|
|
}
|
|
return message;
|
|
}
|
|
|
|
/**
|
|
* Gets the message from the default file.
|
|
*
|
|
* @param key the key to retrieve the message for
|
|
* @return the message from the default file
|
|
*/
|
|
private String getDefault(String key) {
|
|
if (defaultConfiguration == null) {
|
|
InputStream stream = FileUtils.getResourceFromJar(createFilePath(DEFAULT_LANGUAGE));
|
|
defaultConfiguration = YamlConfiguration.loadConfiguration(new InputStreamReader(stream));
|
|
}
|
|
String message = defaultConfiguration.getString(key);
|
|
return message == null
|
|
? "Error retrieving message '" + key + "'"
|
|
: message;
|
|
}
|
|
|
|
@Override
|
|
protected String createFilePath(String language) {
|
|
return MessagePathHelper.createHelpMessageFilePath(language);
|
|
}
|
|
}
|