/*
 * 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 <http://www.gnu.org/licenses/>.
 */
package l2.universe.communityserver;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Logger;

/**
 * @author Forsaiken
 */

public final class Config
{
	protected static final Logger _log = Logger.getLogger(Config.class.getName());

	/** Properties file for community server configurations */
	public static final String  CONFIGURATION_FILE								= "./config/communityserver.properties";
	/** Properties file for server function configurations */
	public static final String  GENERAL_FILE									= "./config/General.properties";

	/** ************************************************** **/
	/** Server Settings -Begin                             **/
	/** ************************************************** **/
	/** Driver to access to database */
	public static String	DATABASE_DRIVER;
	/** Path to access to database */
	public static String	DATABASE_URL;
	/** Database login */
	public static String	DATABASE_LOGIN;
	/** Database password */
	public static String	DATABASE_PASSWORD;
	/** Maximum number of connections to the database */
	public static int		DATABASE_MAX_CONNECTIONS;
	/** Datapack root directory */
	public static File		DATAPACK_ROOT;
	/** Accept alternate ID for server ? */
	public static boolean	ACCEPT_ALTERNATE_ID;
	/** ID for request to the server */
	public static int		REQUEST_ID;

	/** ************************************************** **/
	/** Server Settings -End                           **/
	/** ************************************************** **/

	/** Game Server login port */
	public static int        GAME_SERVER_LOGIN_PORT;
	/** Game Server login Host */
	public static String     GAME_SERVER_LOGIN_HOST;

	/** Accept new game server ? */
	public static boolean ACCEPT_NEW_GAMESERVER;

	public static boolean FLOOD_PROTECTION;
	public static int     FAST_CONNECTION_LIMIT;
	public static int     NORMAL_CONNECTION_TIME;
	public static int     FAST_CONNECTION_TIME;
	public static int     MAX_CONNECTION_PER_IP;

	/** General settings */
	public static int     MIN_PLAYER_LVL_FOR_FORUM;
	public static int     MIN_CLAN_LVL_FOR_FORUM;
	public static long    MAIL_AUTO_DELETION_TIME;

	public static int	  GENERAL_THREAD_CORE_SIZE;

	public static final void load()
	{
		try
		{
			Properties serverSettings			= new Properties();
			InputStream is						= new FileInputStream(new File(CONFIGURATION_FILE));
			serverSettings.load(is);
			is.close();

			GAME_SERVER_LOGIN_HOST				= serverSettings.getProperty("CSHostname","*");
			GAME_SERVER_LOGIN_PORT				= Integer.parseInt(serverSettings.getProperty("CSPort","9013"));

			ACCEPT_NEW_GAMESERVER				= Boolean.parseBoolean(serverSettings.getProperty("AcceptNewGameServer", "True"));
			REQUEST_ID							= Integer.parseInt(serverSettings.getProperty("RequestServerID", "0"));
			ACCEPT_ALTERNATE_ID					= Boolean.parseBoolean(serverSettings.getProperty("AcceptAlternateID", "True"));
			DATAPACK_ROOT						= new File(serverSettings.getProperty("DatapackRoot", ".")).getCanonicalFile();

			DATABASE_DRIVER						= serverSettings.getProperty("Driver", "com.mysql.jdbc.Driver");
			DATABASE_URL						= serverSettings.getProperty("URL", "jdbc:mysql://localhost/l2jcb");
			DATABASE_LOGIN						= serverSettings.getProperty("Login", "root");
			DATABASE_PASSWORD					= serverSettings.getProperty("Password", "");
			DATABASE_MAX_CONNECTIONS			= Integer.parseInt(serverSettings.getProperty("MaximumDbConnections", "10"));
			GENERAL_THREAD_CORE_SIZE			= Integer.parseInt(serverSettings.getProperty("ThreadPoolSize", "1"));

			Properties generalSettings			= new Properties();
			is									= new FileInputStream(new File(GENERAL_FILE));
			generalSettings.load(is);
			is.close();

			MIN_PLAYER_LVL_FOR_FORUM			= Integer.parseInt(generalSettings.getProperty("MinPlayerLvLForForum", "1"));
			MIN_CLAN_LVL_FOR_FORUM				= Integer.parseInt(generalSettings.getProperty("MinClanLvLForForum", "2"));
			MAIL_AUTO_DELETION_TIME				= Long.parseLong(generalSettings.getProperty("MailAutoDeletionTime", "90")) * 86400000;

		}
		catch (Exception e)
		{

		}
	}
}