From 7db10bd45a5b4b87203518ff3f5fe954fb66021d Mon Sep 17 00:00:00 2001 From: rdkartono Date: Thu, 25 Sep 2025 08:18:19 +0700 Subject: [PATCH] Commit 25/09/2025 --- .idea/sqldialects.xml | 6 ++ AAS_NewGen.iml | 2 +- src/database/MariaDB.kt | 217 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 .idea/sqldialects.xml diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..fe91d0d --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AAS_NewGen.iml b/AAS_NewGen.iml index ea0fd29..b5ade6c 100644 --- a/AAS_NewGen.iml +++ b/AAS_NewGen.iml @@ -21,6 +21,7 @@ + @@ -34,6 +35,5 @@ - \ No newline at end of file diff --git a/src/database/MariaDB.kt b/src/database/MariaDB.kt index 36e705f..bf8eea0 100644 --- a/src/database/MariaDB.kt +++ b/src/database/MariaDB.kt @@ -82,6 +82,16 @@ class MariaDB( runBlocking { withContext(Dispatchers.IO) { + Create_Log_Table() + Create_SoundChannel_Table() + Create_Schedulebank_Table() + Create_BroadcastZones_Table() + Create_Messagebank_Table() + Create_Soundbank_Table() + Create_LanguageLink_Table() + Create_Queue_Table() + Create_Queue_Paging_Table() + Reload_Messagebank() Reload_Soundbank() Reload_LanguageLink() @@ -121,6 +131,27 @@ class MariaDB( connected = false } + /** + * Create Log table if not exists + */ + fun Create_Log_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS logs (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "datenya VARCHAR(20) NOT NULL," + // format DD/MM/YYYY + "timenya VARCHAR(20) NOT NULL," + // format HH:MM:SS + "machine VARCHAR(45) NOT NULL," + + "description TEXT NOT NULL" + + ")" + ) + Logger.info("Log table ensured to exist" as Any) + } catch (e: Exception) { + Logger.error("Error creating log table: ${e.message}" as Any) + } + } + /** * Add Log to database * @param machine The machine name or identifier. @@ -198,6 +229,34 @@ class MariaDB( return null } + /** + * Create SoundChannel table if not exists + */ + fun Create_SoundChannel_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS soundchannel (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "channel VARCHAR(45) NOT NULL," + // Channel 01 to Channel 64 + "ip VARCHAR(45) NOT NULL" + // IP address or empty string + ")" + ) + Logger.info("SoundChannel table ensured to exist" as Any) + // Check if table is empty, if so, populate with 64 channels + val countResult = statement?.executeQuery("SELECT COUNT(*) AS count FROM soundchannel") + if (countResult?.next() == true) { + val count = countResult.getInt("count") + if (count == 0) { + Logger.info("SoundChannel table is empty, populating with default channels" as Any) + Clear_SoundChannel() + } + } + } catch (e: Exception) { + Logger.error("Error creating SoundChannel table: ${e.message}" as Any) + } + } + /** * Clears all entries from the soundchannel table in the database and the local list. */ @@ -509,6 +568,31 @@ class MariaDB( consumer.accept(logList) } + /** + * Create Schedulebank table if not exists + */ + fun Create_Schedulebank_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS schedulebank (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "Description VARCHAR(128) NOT NULL," + // Description of the schedule + "Day VARCHAR(255) NOT NULL," + // Day in format DD/MM/YYYY + "Time VARCHAR(20) NOT NULL," + // Time in format HH:MM:SS + "Soundpath VARCHAR(512) NOT NULL," + // Path to the sound file + "Repeat TINYINT UNSIGNED NOT NULL," + // Repeat type (0=Once, 1=Daily, 2=Weekly, 3=Monthly, 4=Yearly) + "Enable BOOLEAN NOT NULL," + // Enable or disable the schedule + "BroadcastZones TEXT NOT NULL," + // Comma-separated list of broadcast zones + "Language VARCHAR(45) NOT NULL" + // Language code (e.g., EN, FR) + ")" + ) + Logger.info("Schedulebank table ensured to exist" as Any) + } catch (e: Exception) { + Logger.error("Error creating Schedulebank table: ${e.message}" as Any) + } + } + /** * Reloads the ScheduleBank list from the database. */ @@ -815,6 +899,25 @@ class MariaDB( return false } + /** + * Create LanguageLink table if not exists + */ + fun Create_LanguageLink_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS languagelinking (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "TAG VARCHAR(45) NOT NULL," + // Language tag (e.g., EN, FR) + "Language VARCHAR(128) NOT NULL" + // Full language name (e.g., English, French) + ")" + ) + Logger.info("LanguageLink table ensured to exist" as Any) + } catch (e: Exception) { + Logger.error("Error creating LanguageLink table: ${e.message}" as Any) + } + } + /** * Reloads the language link list from the database. */ @@ -1043,6 +1146,29 @@ class MariaDB( return false } + /** + * Create Soundbank table if not exists + */ + fun Create_Soundbank_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS soundbank (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "Description VARCHAR(1024) NOT NULL," + // Description of the soundbank + "TAG VARCHAR(45) NOT NULL," + // TAG of the soundbank + "Category VARCHAR(45) NOT NULL," + // Category of the soundbank + "Language VARCHAR(45) NOT NULL," + // Language of the soundbank + "VoiceType VARCHAR(45) NOT NULL," + // VoiceType of the soundbank + "Path VARCHAR(1024) NOT NULL" + // Path to the sound file + ")" + ) + Logger.info("Soundbank table ensured to exist" as Any) + } catch (e: Exception) { + Logger.error("Error creating Soundbank table: ${e.message}" as Any) + } + } + /** * Reloads the soundbank list from the database. */ @@ -1321,6 +1447,29 @@ class MariaDB( return false } + /** + * Create Messagebank table if not exists + */ + fun Create_Messagebank_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS messagebank (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "Description VARCHAR(512) NOT NULL," + // Description of the message + "Language VARCHAR(45) NOT NULL," + // Language of the message + "ANN_ID INT NOT NULL," + // ANN ID of the message + "Voice_Type VARCHAR(45) NOT NULL," + // Voice type of the message + "Message_Detail VARCHAR(1024) NOT NULL," + // Full message text + "Message_TAGS VARCHAR(1024)" + // Comma-separated tags for the message + ")" + ) + Logger.info("Messagebank table ensured to exist" as Any) + } catch (e: Exception) { + Logger.error("Error creating Messagebank table: ${e.message}" as Any) + } + } + /** * Reloads the messagebank list from the database. */ @@ -1575,6 +1724,31 @@ class MariaDB( return false } + /** + * Create Queue table if not exists + */ + fun Create_Queue_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS queue_table (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "Date_Time VARCHAR(45) NOT NULL," + // Date and time of the entry + "Source VARCHAR(45) NOT NULL," + // Source of the entry + "Type VARCHAR(45) NOT NULL," + // Type of the entry + "Message VARCHAR(1024) NOT NULL," + // Message content + "SB_TAGS VARCHAR(1024)," + // Comma-separated soundbank tags + "BroadcastZones VARCHAR(1024) NOT NULL," + // Comma-separated broadcast zones + "Repeat INT NOT NULL," + // Number of repeats + "Language VARCHAR(45) NOT NULL" + // Language of the message + ")" + ) + Logger.info("Queue table ensured to exist" as Any) + } catch (e: Exception) { + Logger.error("Error creating Queue table: ${e.message}" as Any) + } + } + /** * Reads all entries from the queue_table in the database. * @return A list of QueueTable entries. @@ -1669,6 +1843,28 @@ class MariaDB( return false } + /** + * Create Queue paging table if not exists + */ + fun Create_Queue_Paging_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS queue_paging (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "Date_Time VARCHAR(45) NOT NULL," + // Date and time of the entry + "Source VARCHAR(45) NOT NULL," + // Source of the entry + "Type VARCHAR(45) NOT NULL," + // Type of the entry + "Message VARCHAR(512) NOT NULL," + // Message content + "BroadcastZones VARCHAR(1024)" + // Comma-separated soundbank tags + ")" + ) + Logger.info("Queue paging table ensured to exist" as Any) + } catch (e: Exception) { + Logger.error("Error creating Queue paging table: ${e.message}" as Any) + } + } + /** * Reads all entries from the queue_paging in the database. * @return A list of QueuePaging entries. @@ -1784,6 +1980,27 @@ class MariaDB( } } + /** + * Create BroadcastZones table if not exists + */ + fun Create_BroadcastZones_Table() { + try { + val statement = connection?.createStatement() + statement?.executeUpdate( + "CREATE TABLE IF NOT EXISTS broadcastzones (" + + "`index` INT AUTO_INCREMENT PRIMARY KEY," + + "description VARCHAR(512) NOT NULL," + // Description of the broadcast zone + "SoundChannel VARCHAR(45) NOT NULL," + // Sound channel of the broadcast zone + "Box VARCHAR(45) NOT NULL," + // Box of the broadcast zone + "Relay VARCHAR(45) NOT NULL" + // Relay of the broadcast zone + ")" + ) + Logger.info("Broadcast zones table ensured to exist" as Any) + } catch (e: Exception) { + Logger.error("Error creating broadcast zones table: ${e.message}" as Any) + } + } + /** * Adds a new broadcast_zones entry to the database. * @param broadcastZones The BroadcastZones object to add.