Renderer/src/main/java/electrosphere/game/server/db/DatabaseUtils.java
2022-05-17 16:21:24 -04:00

70 lines
2.5 KiB
Java

package electrosphere.game.server.db;
import electrosphere.logger.LoggerInterface;
import electrosphere.main.Globals;
import electrosphere.util.FileUtils;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author satellite
*/
public class DatabaseUtils {
public static boolean initCentralDBFile(String path){
String sanitizedPath = FileUtils.sanitizeFilePath(path);
if(!FileUtils.checkFileExists(sanitizedPath)){
return false;
}
String dbFilePath = sanitizedPath + "/central.db";
if(Globals.dbController == null){
Globals.dbController = new DatabaseController();
}
if(!Globals.dbController.isConnected()){
Globals.dbController.connect(dbFilePath);
}
runScript(Globals.dbController,"createTables.sql");
//both of these are used for arena mode as well as main game
runScript(Globals.dbController,"/auth/createAuthTables.sql");
runScript(Globals.dbController,"/character/createCharacterTables.sql");
//create adventure-only files
if(!dbFilePath.equals("./saves/arena/central.db")){
//we only want to create these if we're not in arena mode
runScript(Globals.dbController,"/towns/createTownsTables.sql");
runScript(Globals.dbController,"/structs/createStructsTables.sql");
}
Globals.dbController.disconnect();
return true;
}
public static boolean runScript(DatabaseController controller, String scriptPath){
String rawScript = "";
try {
rawScript = FileUtils.getSQLScriptFileAsString(scriptPath);
} catch (IOException ex) {
LoggerInterface.loggerEngine.ERROR("Failure reading create db script", ex);
return false;
}
String[] scriptLines = rawScript.split("\n");
String accumulatorString = "";
for(String line : scriptLines){
if(line.length() > 1 && !line.startsWith("--")){
if(line.contains(";")){
accumulatorString = accumulatorString + line;
LoggerInterface.loggerDB.INFO("EXECUTE: " + accumulatorString);
controller.executePreparedStatement(accumulatorString);
accumulatorString = "";
} else {
accumulatorString = accumulatorString + line;
}
}
}
return true;
}
}