commit 10/09/2025

This commit is contained in:
2025-09-10 12:05:56 +07:00
parent 40f462ce79
commit f48ead1b44
12 changed files with 218 additions and 215 deletions

View File

@@ -1,12 +1,13 @@
package database
import codes.Somecodes.Companion.ValiDateForLogHtml
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.apache.poi.xssf.usermodel.XSSFWorkbook
import org.mariadb.jdbc.Connection
import org.tinylog.Logger
import java.sql.Connection
import java.sql.DriverManager
import java.util.function.Consumer
@@ -33,6 +34,7 @@ class MariaDB(
var MessagebankList: ArrayList<Messagebank> = ArrayList()
var LanguageLinkList: ArrayList<LanguageLink> = ArrayList()
var SchedulebankList: ArrayList<ScheduleBank> = ArrayList()
var BroadcastZoneList: ArrayList<BroadcastZones> = ArrayList()
companion object {
fun ValidDate(date: String): Boolean {
@@ -56,7 +58,7 @@ class MariaDB(
*/
fun <T> ArrayListtoString(list: ArrayList<T>): String {
return try {
objectMapper.writeValueAsString(list.toArray())
objectMapper.writeValueAsString(list)
} catch (e: Exception) {
Logger.error("Error converting list to JSON: ${e.message}" as Any)
"[]"
@@ -68,7 +70,7 @@ class MariaDB(
init {
try {
connection =
DriverManager.getConnection("jdbc:mariadb://$address:$port/$dbName", username, password) as Connection
DriverManager.getConnection("jdbc:mysql://$address:$port/$dbName?sslMode=REQUIRED", username, password) as Connection
Logger.info("Connected to MariaDB" as Any)
connected = true
@@ -78,6 +80,7 @@ class MariaDB(
Reload_Soundbank()
Reload_LanguageLink()
Reload_Schedulebank()
GetBroadcastZones()
}
}
@@ -88,6 +91,7 @@ class MariaDB(
Logger.info { "Messagebank count: ${MessagebankList.size}" }
Logger.info { "LanguageLink count: ${LanguageLinkList.size}" }
Logger.info { "Schedulebank count: ${SchedulebankList.size}" }
Logger.info { "BroadcastZones count: ${BroadcastZoneList.size}" }
} catch (e: Exception) {
@@ -195,7 +199,7 @@ class MariaDB(
val logList = ArrayList<Log>()
try {
val statement = connection?.createStatement()
val resultSet = statement?.executeQuery("SELECT * FROM log")
val resultSet = statement?.executeQuery("SELECT * FROM logs")
while (resultSet?.next() == true) {
val log = Log(
resultSet.getLong("index").toULong(),
@@ -213,16 +217,18 @@ class MariaDB(
}
/**
* Get Log from database by date
* @param date The date to filter logs by (format: DD/MM/YYYY)
* Get Log from database by date for HTML usage
* @param date The date to filter logs by (format: DD-MM-YYYY)
* @param consumer A Consumer that will receive the list of logs for the specified date
*/
fun GetLog(date: String, consumer: Consumer<ArrayList<Log>>) {
fun GetLogForHtml(date: String, consumer: Consumer<ArrayList<Log>>) {
val logList = ArrayList<Log>()
if (ValidDate(date)) {
if (ValiDateForLogHtml(date)) {
try {
val statement = connection?.prepareStatement("SELECT * FROM log WHERE datenya = ?")
statement?.setString(1, date)
// must convert from DD-MM-YYYY to DD/MM/YYYY, because in database we use DD/MM/YYYY
val adjusteddate = date.replace("-", "/")
val statement = connection?.prepareStatement("SELECT * FROM logs WHERE datenya = ?")
statement?.setString(1, adjusteddate)
val resultSet = statement?.executeQuery()
while (resultSet?.next() == true) {
val log = Log(
@@ -242,13 +248,21 @@ class MariaDB(
consumer.accept(logList)
}
fun GetLog(date: String, filter: String, consumer: Consumer<ArrayList<Log>>) {
/**
* Get Log from database by date and filter for HTML usage
* @param date The date to filter logs by (format: DD-MM-YYYY)
* @param filter The filter string to search in description or machine
* @param consumer A Consumer that will receive the list of logs for the specified date and filter
*/
fun GetLogForHtml(date: String, filter: String, consumer: Consumer<ArrayList<Log>>) {
val logList = ArrayList<Log>()
if (ValidDate(date)) {
if (ValiDateForLogHtml(date)) {
try {
// must convert from DD-MM-YYYY to DD/MM/YYYY, because in database we use DD/MM/YYYY
val adjusteddate = date.replace("-", "/")
val statement =
connection?.prepareStatement("SELECT * FROM log WHERE datenya = ? AND description LIKE ?")
statement?.setString(1, date)
connection?.prepareStatement("SELECT * FROM logs WHERE datenya = ? AND description LIKE ?")
statement?.setString(1, adjusteddate)
statement?.setString(2, "%$filter%")
val resultSet = statement?.executeQuery()
while (resultSet?.next() == true) {
@@ -559,7 +573,7 @@ class MariaDB(
LanguageLinkList.clear()
try {
val statement = connection?.createStatement()
val resultSet = statement?.executeQuery("SELECT * FROM languagelink")
val resultSet = statement?.executeQuery("SELECT * FROM languagelinking")
while (resultSet?.next() == true) {
val languageLink = LanguageLink(
resultSet.getLong("index").toUInt(),
@@ -1378,11 +1392,11 @@ class MariaDB(
* Get All Broadcast Zones from database
* @return A list of BroadcastZones entries.
*/
fun GetBroadcastZones(): List<BroadcastZones> {
val zonesList = ArrayList<BroadcastZones>()
fun GetBroadcastZones(){
BroadcastZoneList.clear()
try {
val statement = connection?.createStatement()
val resultSet = statement?.executeQuery("SELECT * FROM broadcast_zones")
val resultSet = statement?.executeQuery("SELECT * FROM broadcastzones")
while (resultSet?.next() == true) {
val zone = BroadcastZones(
resultSet.getLong("index").toUInt(),
@@ -1391,12 +1405,11 @@ class MariaDB(
resultSet.getString("Box"),
resultSet.getString("Relay")
)
zonesList.add(zone)
BroadcastZoneList.add(zone)
}
} catch (e: Exception) {
Logger.error("Error fetching broadcast zones: ${e.message}" as Any)
}
return zonesList
}
/**