commit 10/09/2025
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user