package net.sourceforge.pain.tinylib;
import net.sourceforge.pain.*;
import net.sourceforge.pain.data.*;
import net.sourceforge.pain.db.*;
import net.sourceforge.pain.tinylib.data.*;
import net.sourceforge.pain.util.*;
import java.io.*;
public class TinyLibInitializer implements MudlibInitializer {
String configDir;
File plugins_config;
public void readSetting(PropertiesReader props) {
configDir = props.get("tinylib.etc_dir");
final String plugFile = configDir + "/plugins.cfg";
plugins_config = new File(plugFile);
if (!plugins_config.exists() || plugins_config.isDirectory() || !plugins_config.canRead()) {
throw new RuntimeException("plugins startup file not found:" + plugFile);
}
}
public void init() throws Exception {
Mudlib.CONFIG_DIR = configDir;
loadWorld();
checkSafeShutdown();
Codebase.getPluginManager().loadPluginsFromFile(plugins_config);
}
private static void loadWorld() throws Exception {
PainDB db = Codebase.getDB();
CodebaseData data = Codebase.getCodebaseData();
Log.info("loading World");
World world = (World) data.getMudLibRoot();
if (world == null) {
Log.debug("Non inited database detected!, creating world!");
world = new World(db);
data.setMudLibRoot(world);
Mudlib.setWorld(world);
Codebase.processEvent("deploy.CreateInitialWorldEvent", null);
Log.debug("World Created!");
} else {
Log.info("World instance found");
Mudlib.setWorld(world);
}
Log.info("flushing all startup fixes");
db.flush();
Log.info("Flushed OK!");
}
private static void checkSafeShutdown() throws Exception {
Codebase.processEvent("CheckSafeShutdown", null);
}
}