summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/com/earth2me/essentials/EssentialsConf.java148
1 files changed, 93 insertions, 55 deletions
diff --git a/Essentials/src/com/earth2me/essentials/EssentialsConf.java b/Essentials/src/com/earth2me/essentials/EssentialsConf.java
index 6c6567461..2e3920eba 100644
--- a/Essentials/src/com/earth2me/essentials/EssentialsConf.java
+++ b/Essentials/src/com/earth2me/essentials/EssentialsConf.java
@@ -1,6 +1,8 @@
package com.earth2me.essentials;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -19,12 +21,12 @@ import org.bukkit.util.config.Configuration;
public class EssentialsConf extends Configuration
{
- private static final Logger logger = Logger.getLogger("Minecraft");
- private File configFile;
- private String templateName = null;
- private Class<?> resourceClass = EssentialsConf.class;
+ private static final Logger LOGGER = Logger.getLogger("Minecraft");
+ private transient File configFile;
+ private transient String templateName = null;
+ private transient Class<?> resourceClass = EssentialsConf.class;
- public EssentialsConf(File configFile)
+ public EssentialsConf(final File configFile)
{
super(configFile);
this.configFile = configFile;
@@ -42,38 +44,84 @@ public class EssentialsConf extends Configuration
{
if (!configFile.getParentFile().mkdirs())
{
- logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
+ LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
}
}
+ if (configFile.exists() && configFile.length() == 0 && !configFile.delete())
+ {
+ LOGGER.log(Level.SEVERE, "Could not delete file " + configFile.toString());
+ }
+
+ // This will delete files where the first character is 0. In most cases they are broken.
+ if (configFile.exists() && configFile.length() != 0)
+ {
+ try
+ {
+ final InputStream input = new FileInputStream(configFile);
+ try
+ {
+ if (input.read() == 0)
+ {
+ input.close();
+ configFile.delete();
+ }
+ }
+ catch (IOException ex)
+ {
+ LOGGER.log(Level.SEVERE, null, ex);
+ }
+ finally
+ {
+ try
+ {
+ input.close();
+ }
+ catch (IOException ex)
+ {
+ LOGGER.log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+ catch (FileNotFoundException ex)
+ {
+ LOGGER.log(Level.SEVERE, null, ex);
+ }
+ }
+
if (!configFile.exists())
{
if (templateName != null)
{
- logger.log(Level.INFO, Util.format("creatingConfigFromTemplate", configFile.toString()));
+ LOGGER.log(Level.INFO, Util.format("creatingConfigFromTemplate", configFile.toString()));
createFromTemplate();
}
else
{
try
{
- logger.log(Level.INFO, Util.format("creatingEmptyConfig", configFile.toString()));
+ LOGGER.log(Level.INFO, Util.format("creatingEmptyConfig", configFile.toString()));
if (!configFile.createNewFile())
{
- logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
+ LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()));
}
}
catch (IOException ex)
{
- logger.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()), ex);
+ LOGGER.log(Level.SEVERE, Util.format("failedToCreateConfig", configFile.toString()), ex);
}
}
}
- try {
+
+ try
+ {
super.load();
- } catch(RuntimeException e) {
- logger.log(Level.INFO, "File: " + configFile.toString());
+ }
+ catch (RuntimeException e)
+ {
+ LOGGER.log(Level.INFO, "File: " + configFile.toString());
throw e;
}
+
if (this.root == null)
{
this.root = new HashMap<String, Object>();
@@ -89,7 +137,7 @@ public class EssentialsConf extends Configuration
istr = resourceClass.getResourceAsStream(templateName);
if (istr == null)
{
- logger.log(Level.SEVERE, Util.format("couldNotFindTemplate", templateName));
+ LOGGER.log(Level.SEVERE, Util.format("couldNotFindTemplate", templateName));
return;
}
ostr = new FileOutputStream(configFile);
@@ -104,7 +152,7 @@ public class EssentialsConf extends Configuration
}
catch (IOException ex)
{
- logger.log(Level.SEVERE, Util.format("failedToWriteConfig", configFile.toString()), ex);
+ LOGGER.log(Level.SEVERE, Util.format("failedToWriteConfig", configFile.toString()), ex);
return;
}
finally
@@ -129,12 +177,12 @@ public class EssentialsConf extends Configuration
}
catch (IOException ex)
{
- logger.log(Level.SEVERE, Util.format("failedToCloseConfig", configFile.toString()), ex);
+ LOGGER.log(Level.SEVERE, Util.format("failedToCloseConfig", configFile.toString()), ex);
}
}
}
- public void setTemplateName(String templateName)
+ public void setTemplateName(final String templateName)
{
this.templateName = templateName;
}
@@ -144,48 +192,48 @@ public class EssentialsConf extends Configuration
return configFile;
}
- public void setTemplateName(String templateName, Class<?> resClass)
+ public void setTemplateName(final String templateName, final Class<?> resClass)
{
this.templateName = templateName;
this.resourceClass = resClass;
}
- public boolean hasProperty(String path)
+ public boolean hasProperty(final String path)
{
return getProperty(path) != null;
}
- public Location getLocation(String path, Server server) throws Exception
+ public Location getLocation(final String path, final Server server) throws Exception
{
- String worldName = getString((path != null ? path + "." : "") + "world");
+ final String worldName = getString((path == null ? "" : path + ".") + "world");
if (worldName == null || worldName.isEmpty())
{
return null;
}
- World world = server.getWorld(worldName);
+ final World world = server.getWorld(worldName);
if (world == null)
{
throw new Exception(Util.i18n("invalidWorld"));
}
return new Location(world,
- getDouble((path != null ? path + "." : "") + "x", 0),
- getDouble((path != null ? path + "." : "") + "y", 0),
- getDouble((path != null ? path + "." : "") + "z", 0),
- (float)getDouble((path != null ? path + "." : "") + "yaw", 0),
- (float)getDouble((path != null ? path + "." : "") + "pitch", 0));
+ getDouble((path == null ? "" : path + ".") + "x", 0),
+ getDouble((path == null ? "" : path + ".") + "y", 0),
+ getDouble((path == null ? "" : path + ".") + "z", 0),
+ (float)getDouble((path == null ? "" : path + ".") + "yaw", 0),
+ (float)getDouble((path == null ? "" : path + ".") + "pitch", 0));
}
- public void setProperty(String path, Location loc)
+ public void setProperty(final String path, final Location loc)
{
- setProperty((path != null ? path + "." : "") + "world", loc.getWorld().getName());
- setProperty((path != null ? path + "." : "") + "x", loc.getX());
- setProperty((path != null ? path + "." : "") + "y", loc.getY());
- setProperty((path != null ? path + "." : "") + "z", loc.getZ());
- setProperty((path != null ? path + "." : "") + "yaw", loc.getYaw());
- setProperty((path != null ? path + "." : "") + "pitch", loc.getPitch());
+ setProperty((path == null ? "" : path + ".") + "world", loc.getWorld().getName());
+ setProperty((path == null ? "" : path + ".") + "x", loc.getX());
+ setProperty((path == null ? "" : path + ".") + "y", loc.getY());
+ setProperty((path == null ? "" : path + ".") + "z", loc.getZ());
+ setProperty((path == null ? "" : path + ".") + "yaw", loc.getYaw());
+ setProperty((path == null ? "" : path + ".") + "pitch", loc.getPitch());
}
- public ItemStack getItemStack(String path)
+ public ItemStack getItemStack(final String path)
{
return new ItemStack(
Material.valueOf(getString(path + ".type", "AIR")),
@@ -194,9 +242,9 @@ public class EssentialsConf extends Configuration
(byte)getInt(path + ".data", 0)*/);
}
- public void setProperty(String path, ItemStack stack)
+ public void setProperty(final String path, final ItemStack stack)
{
- Map<String, Object> map = new HashMap<String, Object>();
+ final Map<String, Object> map = new HashMap<String, Object>();
map.put("type", stack.getType().toString());
map.put("amount", stack.getAmount());
map.put("damage", stack.getDurability());
@@ -205,40 +253,30 @@ public class EssentialsConf extends Configuration
setProperty(path, map);
}
- public long getLong(String path, long def)
+ public long getLong(final String path, final long def)
{
- Number num;
try
{
- num = (Number)getProperty(path);
+ final Number num = (Number)getProperty(path);
+ return num == null ? def : num.longValue();
}
- catch(ClassCastException ex)
+ catch (ClassCastException ex)
{
return def;
}
- if (num == null)
- {
- return def;
- }
- return num.longValue();
}
@Override
- public double getDouble(String path, double def)
+ public double getDouble(final String path, final double def)
{
- Number num;
try
{
- num = (Number)getProperty(path);
- }
- catch(ClassCastException ex)
- {
- return def;
+ Number num = (Number)getProperty(path);
+ return num == null ? def : num.doubleValue();
}
- if (num == null)
+ catch (ClassCastException ex)
{
return def;
}
- return num.doubleValue();
}
}