package com.nyancraft.reportrts.util;
import com.nyancraft.reportrts.ReportRTS;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
public class MessageHandler {
private FileConfiguration messageConfig = null;
private File messageFile = null;
public Map<String, String> messageMap = new HashMap<>();
public void reloadMessageConfig() {
if(!configExists()){
if(messageFile == null) messageFile = new File(ReportRTS.getPlugin().getDataFolder(), "messages.yml");
messageConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(ReportRTS.getPlugin().getResource("messages.yml")));
saveMessageConfig();
}
if(messageFile == null) messageFile = new File(ReportRTS.getPlugin().getDataFolder(), "messages.yml");
messageConfig = YamlConfiguration.loadConfiguration(messageFile);
InputStreamReader defaultMessageStream = new InputStreamReader(ReportRTS.getPlugin().getResource("messages.yml"));
if(defaultMessageStream != null) {
YamlConfiguration defaultConfig = YamlConfiguration.loadConfiguration(defaultMessageStream);
messageConfig.setDefaults(defaultConfig);
}
// Ensure that the messages file is not from prior to the rewrite.
if(messageConfig.getString("modreqFiledUser") != null) {
// Rename the old messages file.
if(!messageFile.renameTo(new File(ReportRTS.getPlugin().getDataFolder(), "messages.yml.old"))) {
ReportRTS.getPlugin().getLogger().warning("Failed to move the old messages file. Does a backup already exist?");
return;
}
// Get the new configuration.
messageConfig = YamlConfiguration.loadConfiguration(new InputStreamReader(ReportRTS.getPlugin().getResource("messages.yml")));
// Save to disk.
saveMessageConfig();
}
}
public FileConfiguration getMessageConfig() {
if(messageConfig == null) this.reloadMessageConfig();
return messageConfig;
}
public void saveMessageConfig() {
if(messageConfig == null || messageFile == null) return;
try {
getMessageConfig().save(messageFile);
} catch(IOException e) {
ReportRTS.getPlugin().getLogger().log(Level.SEVERE, "Could not save messages to " + messageConfig, e);
}
}
public void reloadMessageMap() {
Set<String> Messages = messageConfig.getKeys(false);
for(String message : Messages){
messageMap.put(message, messageConfig.getString(message));
}
}
private boolean configExists() {
return new File(ReportRTS.getPlugin().getDataFolder(), "messages.yml").exists();
}
}