diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
new file mode 100644
index 0000000..96fdc1b
--- /dev/null
+++ b/.idea/dataSources.xml
@@ -0,0 +1,18 @@
+
+
+
+
+ mariadb
+ true
+ org.mariadb.jdbc.Driver
+ jdbc:mariadb://localhost:3306/aas
+
+
+
+
+
+
+ $ProjectFileDir$
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 16122d2..101f07d 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -1,6 +1,11 @@
+
+
+
+
+
diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml
new file mode 100644
index 0000000..1b7403c
--- /dev/null
+++ b/.idea/sqldialects.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/database/Log.kt b/src/database/Log.kt
index d85243d..8af4193 100644
--- a/src/database/Log.kt
+++ b/src/database/Log.kt
@@ -6,4 +6,20 @@ data class Log(
val timenya: String,
val machine: String,
val description : String
-)
+) {
+ @Suppress("unused")
+ companion object {
+
+ fun ValidDate(date: String): Boolean {
+ // Simple date validation (DD/MM/YYYY)
+ val regex = Regex("""^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[0-2])/\d{4}$""")
+ return regex.matches(date)
+ }
+
+ fun validTime(time: String): Boolean {
+ // Simple time validation (HH:MM:SS)
+ val regex = Regex("""^(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$""")
+ return regex.matches(time)
+ }
+ }
+}
diff --git a/src/database/MariaDB.kt b/src/database/MariaDB.kt
index 65abeec..a9221fc 100644
--- a/src/database/MariaDB.kt
+++ b/src/database/MariaDB.kt
@@ -3,6 +3,8 @@ package database
import org.mariadb.jdbc.Connection
import org.tinylog.Logger
import java.sql.DriverManager
+import java.time.LocalDateTime
+import java.time.format.DateTimeFormatter
/**
* A class to manage a connection to a MariaDB database.
@@ -13,6 +15,7 @@ import java.sql.DriverManager
* @property username The username for the database connection.
* @property password The password for the database connection.
*/
+@Suppress("unused")
class MariaDB (
address : String = "localhost",
port : Int = 3306,
@@ -30,6 +33,8 @@ class MariaDB (
connection = DriverManager.getConnection("jdbc:mariadb://$address:$port/$dbName", username, password) as Connection
Logger.info("Connected to MariaDB" as Any)
connected = true
+ Reload_Soundbank()
+ Reload_Messagebank()
} catch (e : Exception) {
Logger.error("Failed to connect to MariaDB: ${e.message}" as Any)
}
@@ -49,6 +54,116 @@ class MariaDB (
connected = false
}
+ /**
+ * Get Log from database
+ * @return ArrayList of Log objects
+ */
+ fun GetLog() : ArrayList {
+ val logList = ArrayList()
+ try {
+ val statement = connection?.createStatement()
+ val resultSet = statement?.executeQuery("SELECT * FROM log")
+ while (resultSet?.next() == true) {
+ val log = Log(
+ resultSet.getLong("index").toULong(),
+ resultSet.getString("datenya"),
+ resultSet.getString("timenya"),
+ resultSet.getString("machine"),
+ resultSet.getString("description")
+ )
+ logList.add(log)
+ }
+ } catch (e : Exception) {
+ Logger.error("Error fetching logs: ${e.message}" as Any)
+ }
+ return logList
+ }
+ /**
+ * Get Log from database by date
+ * @param date The date to filter logs by (format: DD/MM/YYYY)
+ * @return ArrayList of Log objects for the specified date
+ */
+ fun GetLog(date : String) : ArrayList {
+ val logList = ArrayList()
+ try {
+ val statement = connection?.prepareStatement("SELECT * FROM log WHERE datenya = ?")
+ statement?.setString(1, date)
+ val resultSet = statement?.executeQuery()
+ while (resultSet?.next() == true) {
+ val log = Log(
+ resultSet.getLong("index").toULong(),
+ resultSet.getString("datenya"),
+ resultSet.getString("timenya"),
+ resultSet.getString("machine"),
+ resultSet.getString("description")
+ )
+ logList.add(log)
+ }
+ } catch (e : Exception) {
+ Logger.error("Error fetching logs for date $date: ${e.message}" as Any)
+ }
+ return logList
+ }
+
+ /**
+ * Get Log from database by date
+ * @param date The date to filter logs by (as LocalDateTime)
+ * @return ArrayList of Log objects for the specified date
+ */
+ fun GetLog(date : LocalDateTime) : ArrayList {
+ val datenya = DateTimeFormatter.ofPattern("DD/MM/YYYY").format(date)
+ return GetLog(datenya)
+ }
+
+ /**
+ * Reloads the soundbank list from the database.
+ */
+ private fun Reload_Soundbank() {
+ SoundbankList.clear()
+ try {
+ val statement = connection?.createStatement()
+ val resultSet = statement?.executeQuery("SELECT * FROM soundbank")
+ while (resultSet?.next() == true) {
+ val soundbank = Soundbank(
+ resultSet.getLong("index").toUInt(),
+ resultSet.getString("Description"),
+ resultSet.getString("TAG"),
+ resultSet.getString("Category"),
+ resultSet.getString("Language"),
+ resultSet.getString("VoiceType"),
+ resultSet.getString("Path")
+ )
+ SoundbankList.add(soundbank)
+ }
+ } catch (e : Exception) {
+ Logger.error("Error fetching soundbanks: ${e.message}" as Any)
+ }
+ }
+
+ /**
+ * Reloads the messagebank list from the database.
+ */
+ private fun Reload_Messagebank() {
+ MessagebankList.clear()
+ try {
+ val statement = connection?.createStatement()
+ val resultSet = statement?.executeQuery("SELECT * FROM messagebank")
+ while (resultSet?.next() == true) {
+ val messagebank = Messagebank(
+ resultSet.getLong("index").toUInt(),
+ resultSet.getString("Description"),
+ resultSet.getString("TAG"),
+ resultSet.getInt("Category").toUInt(),
+ resultSet.getString("Language"),
+ resultSet.getString("VoiceType"),
+ resultSet.getString("Path")
+ )
+ MessagebankList.add(messagebank)
+ }
+ } catch (e : Exception) {
+ Logger.error("Error fetching messagebanks: ${e.message}" as Any)
+ }
+ }
}
\ No newline at end of file