mcMMO/src/main/java/com/gmail/nossr50/config/ConfigLoader.java

80 lines
2.3 KiB
Java
Raw Normal View History

2012-03-18 21:35:47 +01:00
package com.gmail.nossr50.config;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
2012-03-18 21:35:47 +01:00
import org.bukkit.configuration.file.FileConfiguration;
2012-05-23 19:52:33 +02:00
import org.bukkit.configuration.file.YamlConfiguration;
2012-03-18 21:35:47 +01:00
import com.gmail.nossr50.mcMMO;
2012-03-18 21:35:47 +01:00
public abstract class ConfigLoader {
protected static final mcMMO plugin = mcMMO.p;
protected String fileName;
protected File configFile;
protected FileConfiguration config;
2012-03-18 21:35:47 +01:00
public ConfigLoader(String relativePath, String fileName){
this.fileName = fileName;
configFile = new File(plugin.getDataFolder(), relativePath + File.separator + fileName);
2012-07-03 23:29:26 +02:00
loadFile();
2012-03-18 21:35:47 +01:00
}
public ConfigLoader(String fileName){
this.fileName = fileName;
configFile = new File(plugin.getDataFolder(), fileName);
2012-07-03 23:29:26 +02:00
loadFile();
}
2012-07-03 23:29:26 +02:00
protected void loadFile() {
2012-05-23 19:52:33 +02:00
if (!configFile.exists()) {
plugin.getLogger().info("Creating mcMMO " + fileName + " File...");
createFile();
}
else {
plugin.getLogger().info("Loading mcMMO " + fileName + " File...");
2012-05-23 19:52:33 +02:00
}
config = YamlConfiguration.loadConfiguration(configFile);
2012-05-23 19:52:33 +02:00
}
2012-03-18 21:35:47 +01:00
protected abstract void loadKeys();
protected void createFile() {
if (configFile.exists()) {
return;
2012-03-18 21:35:47 +01:00
}
configFile.getParentFile().mkdirs();
InputStream inputStream = plugin.getResource(fileName);
if (inputStream != null) {
try {
copyStreamToFile(inputStream, configFile);
} catch (Exception e) {
e.printStackTrace();
}
}
else {
2012-07-03 22:05:47 +02:00
plugin.getLogger().severe("Missing ressource file: '" + fileName + "' please notify the plugin authors");
}
}
private static void copyStreamToFile(InputStream inputStream, File file) throws Exception {
OutputStream outputStream = new FileOutputStream(file);
int read = 0;
byte[] bytes = new byte[1024];
2012-03-18 21:35:47 +01:00
while ((read = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, read);
}
2012-03-18 21:35:47 +01:00
inputStream.close();
outputStream.close();
}
2012-03-18 21:35:47 +01:00
}