/**
* This file is part of aion-emu <aion-emu.com>.
*
* aion-emu 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.
*
* aion-emu 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 aion-emu. If not, see <http://www.gnu.org/licenses/>.
*/
package com.aionemu.gameserver.configs;
import java.util.Properties;
import org.apache.log4j.Logger;
import com.aionemu.commons.configuration.ConfigurableProcessor;
import com.aionemu.commons.utils.PropertiesUtils;
import com.aionemu.gameserver.configs.administration.AdminConfig;
import com.aionemu.gameserver.configs.main.CacheConfig;
import com.aionemu.gameserver.configs.main.CustomConfig;
import com.aionemu.gameserver.configs.main.GSConfig;
import com.aionemu.gameserver.configs.main.GroupConfig;
import com.aionemu.gameserver.configs.main.LegionConfig;
import com.aionemu.gameserver.configs.main.PeriodicSaveConfig;
import com.aionemu.gameserver.configs.main.RateConfig;
import com.aionemu.gameserver.configs.main.ShutdownConfig;
import com.aionemu.gameserver.configs.main.TaskManagerConfig;
import com.aionemu.gameserver.configs.main.ThreadConfig;
import com.aionemu.gameserver.configs.network.IPConfig;
import com.aionemu.gameserver.configs.network.NetworkConfig;
import com.aionemu.gameserver.utils.Util;
/**
* @author -Nemesiss-
* @author SoulKeeper
*/
public class Config
{
/**
* Logger for this class.
*/
protected static final Logger log = Logger.getLogger(Config.class);
/**
* Initialize all configs in com.aionemu.gameserver.configs package
*/
public static void load()
{
try
{
Properties[] props = PropertiesUtils.loadAllFromDirectory("./config");
ConfigurableProcessor.process(Config.class, props);
// Administration
Util.printSection("Administration");
String administration = "./config/administration";
Properties[] adminProps = PropertiesUtils.loadAllFromDirectory(administration);
ConfigurableProcessor.process(AdminConfig.class, adminProps);
log.info("Loading: " + administration + "/admin.properties");
// Main
Util.printSection("Main");
String main = "./config/main";
Properties[] mainProps = PropertiesUtils.loadAllFromDirectory(main);
ConfigurableProcessor.process(LegionConfig.class, mainProps);
log.info("Loading: " + main + "/legion.properties");
ConfigurableProcessor.process(RateConfig.class, mainProps);
log.info("Loading: " + main + "/rates.properties");
ConfigurableProcessor.process(CacheConfig.class, mainProps);
log.info("Loading: " + main + "/cache.properties");
ConfigurableProcessor.process(ShutdownConfig.class, mainProps);
log.info("Loading: " + main + "/shutdown.properties");
ConfigurableProcessor.process(TaskManagerConfig.class, mainProps);
log.info("Loading: " + main + "/taskmanager.properties");
ConfigurableProcessor.process(GroupConfig.class, mainProps);
log.info("Loading: " + main + "/group.properties");
ConfigurableProcessor.process(CustomConfig.class, mainProps);
log.info("Loading: " + main + "/custom.properties");
ConfigurableProcessor.process(GSConfig.class, mainProps);
log.info("Loading: " + main + "/gameserver.properties");
ConfigurableProcessor.process(PeriodicSaveConfig.class, mainProps);
log.info("Loading: " + main + "/periodicsave.properties");
ConfigurableProcessor.process(ThreadConfig.class, mainProps);
log.info("Loading: " + main + "/thread.properties");
// Network
Util.printSection("Network");
String network = "./config/network";
Properties[] networkProps = PropertiesUtils.loadAllFromDirectory(network);
ConfigurableProcessor.process(NetworkConfig.class, networkProps);
log.info("Loading: " + network + "/database.properties");
log.info("Loading: " + network + "/network.properties");
}
catch(Exception e)
{
log.fatal("Can't load gameserver configuration: ", e);
throw new Error("Can't load gameserver configuration: ", e);
}
IPConfig.load();
}
}