From 045c9f46d2cb623612428ca7e9e76f0e428cf188 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sat, 17 Feb 2024 22:27:23 -0600 Subject: [PATCH] Add resource (sql script) validation in Initializer.java --- .../distanthorizons/core/Initializer.java | 18 ++++++++++++++++++ .../core/sql/DatabaseUpdater.java | 12 ++++++++++++ 2 files changed, 30 insertions(+) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java index 590f08bc7..e74d7bedd 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java @@ -20,6 +20,7 @@ package com.seibel.distanthorizons.core; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; +import com.seibel.distanthorizons.core.sql.DatabaseUpdater; import com.seibel.distanthorizons.core.wrapperInterfaces.IWrapperFactory; import com.seibel.distanthorizons.coreapi.ModInfo; import com.seibel.distanthorizons.core.world.DhApiWorldProxy; @@ -35,6 +36,8 @@ import net.jpountz.lz4.LZ4Compressor; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.io.InputStream; + /** Handles first time Core setup. */ public class Initializer { @@ -57,6 +60,21 @@ public class Initializer throw e; } + // confirm the resource directory is present + try + { + int scriptCount = DatabaseUpdater.getAutoUpdateScriptCount(); + if (scriptCount == 0) + { + throw new NullPointerException("No auto update scripts found, but no error thrown. This might mean the script list file is corrupted or empty."); + } + } + catch (Exception e) + { + LOGGER.fatal("Critical programmer error: Can't read SQL Scripts resource folder is either missing or malformed. Error: [" + e.getMessage() + "]."); + throw new RuntimeException(e); + } + CompleteFullDataSourceLoader unused2 = new CompleteFullDataSourceLoader(); // Auto register into the loader system diff --git a/core/src/main/java/com/seibel/distanthorizons/core/sql/DatabaseUpdater.java b/core/src/main/java/com/seibel/distanthorizons/core/sql/DatabaseUpdater.java index 131fb92a8..d41c3cdc1 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/sql/DatabaseUpdater.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/sql/DatabaseUpdater.java @@ -222,6 +222,18 @@ public class DatabaseUpdater + //====================// + // startup validation // + //====================// + + /** + * Can be used to confirm the auto update scripts are in their expected folder. + * Will throw an exception if the scripts are missing or malformed. + */ + public static int getAutoUpdateScriptCount() throws NullPointerException, IOException { return getAutoUpdateScripts().size(); } + + + //================// // helper classes // //================//