From f3d94e43111630c4549d5035125a68fcafbd211f Mon Sep 17 00:00:00 2001 From: Osiris Team Date: Sun, 5 Nov 2023 23:54:30 +0100 Subject: [PATCH] fixed raw database url --- .../com/osiris/jsqlgen/payhook/Database.java | 2 +- src/main/java/com/osiris/payhook/PayHook.java | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/osiris/jsqlgen/payhook/Database.java b/src/main/java/com/osiris/jsqlgen/payhook/Database.java index a486a4f..ec1361e 100644 --- a/src/main/java/com/osiris/jsqlgen/payhook/Database.java +++ b/src/main/java/com/osiris/jsqlgen/payhook/Database.java @@ -16,7 +16,7 @@ It holds the database credentials (set by you at first run of jSQL-Gen).
- Ensures optimal performance (cpu and memory usage) for any type of database from small to huge, with millions of queries per second. - Connection status is checked before doing a query (since it could be closed or timed out and thus result in errors).*/ public class Database{ -public static String rawUrl = "jdbc:mysql://localhost/"; +public static String rawUrl = com.osiris.payhook.PayHook.databaseRawUrl; public static String url = com.osiris.payhook.PayHook.databaseUrl; public static String name = com.osiris.payhook.PayHook.databaseName; public static String username = com.osiris.payhook.PayHook.databaseUsername; diff --git a/src/main/java/com/osiris/payhook/PayHook.java b/src/main/java/com/osiris/payhook/PayHook.java index f2e9471..aa7d56e 100644 --- a/src/main/java/com/osiris/payhook/PayHook.java +++ b/src/main/java/com/osiris/payhook/PayHook.java @@ -195,6 +195,7 @@ public final class PayHook { * Always null, except when doing init of database. */ public static String databaseUrl = null; + public static String databaseRawUrl = null; /** * Always null, except when doing init of database. */ @@ -238,12 +239,14 @@ public static synchronized void init(String brandName, String databaseUrl, Strin if (isSandbox && (!databaseUrl.contains("sandbox") && !databaseUrl.contains("test"))) throw new SQLException("You are running in sandbox mode, thus your database-url/name must contain 'sandbox' or 'test'!"); PayHook.databaseUrl = databaseUrl; + PayHook.databaseRawUrl = getRawDbUrlFrom(databaseUrl); PayHook.databaseName = Objects.requireNonNull(databaseName); PayHook.databaseUsername = Objects.requireNonNull(databaseUsername); PayHook.databasePassword = Objects.requireNonNull(databasePassword); com.osiris.jsqlgen.payhook.Database.create(); // Reset values since they aren't needed anymore PayHook.databaseUrl = null; + PayHook.databaseRawUrl = null; PayHook.databaseName = null; PayHook.databaseUsername = null; PayHook.databasePassword = null; @@ -287,6 +290,26 @@ public static synchronized void init(String brandName, String databaseUrl, Strin isInitialised = true; } + /** + * Gets the raw database url without database name.
+ * Before: "jdbc:mysql://localhost/my_database"
+ * After: "jdbc:mysql://localhost"
+ */ + private static String getRawDbUrlFrom(String databaseUrl) { + int index = 0; + int count = 0; + for (int i = 0; i < databaseUrl.length(); i++) { + char c = databaseUrl.charAt(i); + if(c == '/'){ + index = i; + count++; + } + if(count == 3) break; + } + if(count != 3) return databaseUrl; // Means there is less than 3 "/", thus may already be raw url, or totally wrong url + return databaseUrl.substring(0, index); + } + public static void initCommandLineTool() { if (commandLineThread != null) commandLineThread.interrupt(); commandLineThread = new Thread(() -> {