/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
package com.l2jserver.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.nio.charset.Charset;
import java.util.Properties;
import java.util.logging.Logger;
/**
* Specialized {@link java.util.Properties} class.
* Simplifies loading of property files and adds logging if a non existing property is requested.
* @author Noctarius
*/
public final class L2Properties extends Properties
{
private static final long serialVersionUID = 1L;
private static Logger _log = Logger.getLogger(L2Properties.class.getName());
public L2Properties()
{
}
public L2Properties(String name) throws IOException
{
load(new FileInputStream(name));
}
public L2Properties(File file) throws IOException
{
load(new FileInputStream(file));
}
public L2Properties(InputStream inStream) throws IOException
{
load(inStream);
}
public L2Properties(Reader reader) throws IOException
{
load(reader);
}
public void load(String name) throws IOException
{
load(new FileInputStream(name));
}
public void load(File file) throws IOException
{
load(new FileInputStream(file));
}
@Override
public void load(InputStream inStream) throws IOException
{
try (InputStreamReader isr = new InputStreamReader(inStream, Charset.defaultCharset());)
{
super.load(isr);
}
finally
{
inStream.close();
}
}
@Override
public void load(Reader reader) throws IOException
{
try
{
super.load(reader);
}
finally
{
reader.close();
}
}
/**
* @see Properties#getProperty(String)
*/
@Override
public String getProperty(String key)
{
String property = super.getProperty(key);
if (property == null)
{
_log.info("L2Properties: Missing property for key - " + key);
return null;
}
return property.trim();
}
/**
* @see Properties#getProperty(String,String)
*/
@Override
public String getProperty(String key, String defaultValue)
{
String property = super.getProperty(key, defaultValue);
if (property == null)
{
_log.warning("L2Properties: Missing defaultValue for key - " + key);
return null;
}
return property.trim();
}
}