diff --git a/html/webpage/assets/js/usermanagement.js b/html/webpage/assets/js/usermanagement.js index 34c6a55..a163a60 100644 --- a/html/webpage/assets/js/usermanagement.js +++ b/html/webpage/assets/js/usermanagement.js @@ -52,10 +52,10 @@ window.broadcastzones = []; * Get Messagebank ANN_IDs from server */ function get_messagebankids() { - messagebankids = []; + window.messagebankids = []; fetchAPI("MessageBank/" + "MessageIDs", "GET", {}, null, (okdata) => { if (Array.isArray(okdata)) { - messagebankids.push(...okdata); + window.messagebankids.push(...okdata); } }, (errdata) => { alert("Error loading message bank IDs : " + errdata.message); @@ -66,10 +66,10 @@ function get_messagebankids() { * Get Airline Tags from server */ function get_airlinetags() { - airlinetags = []; + window.airlinetags = []; fetchAPI("SoundBank/" + "AirlineTags", "GET", {}, null, (okdata) => { if (Array.isArray(okdata)) { - airlinetags.push(...okdata); + window.airlinetags.push(...okdata); } }, (errdata) => { alert("Error loading airline tags : " + errdata.message); @@ -80,10 +80,10 @@ function get_airlinetags() { * Get City Tags from server */ function get_citytags() { - citytags = []; + window.citytags = []; fetchAPI("SoundBank/" + "CityTags", "GET", {}, null, (okdata) => { if (Array.isArray(okdata)) { - citytags.push(...okdata); + window.citytags.push(...okdata); } }, (errdata) => { alert("Error loading city tags : " + errdata.message); @@ -94,10 +94,10 @@ function get_citytags() { * Get Broadcast Zones descriptions from server */ function get_broadcastzones_descriptions() { - broadcastzones = []; + window.broadcastzones = []; fetchAPI("BroadcastZones/" + "BroadcastZoneDescriptions", "GET", {}, null, (okdata) => { if (Array.isArray(okdata)) { - broadcastzones.push(...okdata); + window.broadcastzones.push(...okdata); } }, (errdata) => { alert("Error loading broadcast zones : " + errdata.message); @@ -127,7 +127,7 @@ function fill_usertablebody(vv) { `; $('#usertablebody').append(row); let $addedrow = $('#usertablebody tr:last'); - $addedrow.on('click', function () { + $addedrow.off('click').on('click', function () { if (window.selecteduserrow) { window.selecteduserrow.find('td').css('background-color', ''); if (window.selecteduserrow.is($(this))) { @@ -170,15 +170,6 @@ $(document).ready(function () { get_messagebankids(); get_broadcastzones_descriptions(); - - let $usertablebody = $('#usertablebody'); - let $finduser = $('#finduser'); - let $btnClear = $('#btnClear'); - let $btnAdd = $('#btnAdd'); - let $btnRemove = $('#btnRemove'); - let $btnEdit = $('#btnEdit'); - let $btnExport = $('#btnExport'); - let $btnImport = $('#btnImport'); let APIURL = "UserManagement/"; // add / edit modal elements @@ -279,9 +270,9 @@ $(document).ready(function () { } - $usertablebody.empty(); + $('#usertablebody').empty(); reloaduserDB(); - $finduser.on('input', function () { + $('#finduser').off('input').on('input', function () { let searchTerm = $(this).val().toLowerCase(); if (searchTerm.length > 0) { let filteredUsers = window.userdb.filter(user => @@ -305,7 +296,7 @@ $(document).ready(function () { */ function modalshow(editmode = false, index=0) { // event on click btnShowSoundbankModal - $btnShowSoundbankModal.on('click', function () { + $btnShowSoundbankModal.off('click').on('click', function () { $soundbankmodal.modal('show'); fill_citylist(); fill_airlinelist(); @@ -331,7 +322,7 @@ $(document).ready(function () { }); } - $soundbankmodal.on('click.soundbankselectionsave', '#soundbankselectionsave', function () { + $soundbankmodal.off('click.soundbankselectionsave').on('click.soundbankselectionsave', '#soundbankselectionsave', function () { let selected_airlinetags = []; $('#airlinelist input[type=checkbox]:checked').each(function () { selected_airlinetags.push($(this).val()); @@ -357,12 +348,12 @@ $(document).ready(function () { $soundbankmodal.modal('hide'); }); - $soundbankmodal.on('click.soundbankselectionclose', '#soundbankselectionclose', function () { + $soundbankmodal.off('click.soundbankselectionclose').on('click.soundbankselectionclose', '#soundbankselectionclose', function () { $soundbankmodal.modal('hide'); }); }); // event on click btnShowMessagebankModal - $btnShowMessagebankModal.on('click', function () { + $btnShowMessagebankModal.off('click').on('click', function () { $messagebankmodal.modal('show'); fill_messagebanklist(); let messagebank = $modalmessagebank.val().trim(); @@ -376,7 +367,7 @@ $(document).ready(function () { }); } - $messagebankmodal.on('click.messagebankselectionsave', '#messagebankselectionsave', function () { + $messagebankmodal.off('click.messagebankselectionsave').on('click.messagebankselectionsave', '#messagebankselectionsave', function () { let selected_messagebankids = []; $('#messagebanklist input[type=checkbox]:checked').each(function () { selected_messagebankids.push($(this).val()); @@ -391,12 +382,12 @@ $(document).ready(function () { $messagebankmodal.modal('hide'); }); - $messagebankmodal.on('click.messagebankselectionclose', '#messagebankselectionclose', function () { + $messagebankmodal.off('click.messagebankselectionclose').on('click.messagebankselectionclose', '#messagebankselectionclose', function () { $messagebankmodal.modal('hide'); }); }); // event on click btnShowBroaadcastZoneModal - $btnShowBroaadcastZoneModal.on('click', function () { + $btnShowBroaadcastZoneModal.off('click').on('click', function () { $broadcastzonemodal.modal('show'); fill_broadcastzonelist(); let broadcastzones = $modalbroadcastzones.val().trim(); @@ -409,7 +400,7 @@ $(document).ready(function () { } }); } - $broadcastzonemodal.on('click.broadcastzoneselectionsave', '#broadcastzoneselectionsave', function () { + $broadcastzonemodal.off('click.broadcastzoneselectionsave').on('click.broadcastzoneselectionsave', '#broadcastzoneselectionsave', function () { let selected_broadcastzones = []; $('#broadcastzonelist input[type=checkbox]:checked').each(function () { selected_broadcastzones.push($(this).val()); @@ -423,13 +414,13 @@ $(document).ready(function () { $modalbroadcastzones.val(broadcastzonesvalue); $broadcastzonemodal.modal('hide'); }); - $broadcastzonemodal.on('click.broadcastzoneselectionclose', '#broadcastzoneselectionclose', function () { + $broadcastzonemodal.off('click.broadcastzoneselectionclose').on('click.broadcastzoneselectionclose', '#broadcastzoneselectionclose', function () { $broadcastzonemodal.modal('hide'); }); }); // event on Click save button - $addmodal.on('click.usermanagementsave', '#usermanagementsave', function () { + $addmodal.off('click.usermanagementsave').on('click.usermanagementsave', '#usermanagementsave', function () { let username = $modalusername.val().trim(); let password = $modalpassword.val(); let verifypassword = $modalverifypassword.val(); @@ -503,12 +494,12 @@ $(document).ready(function () { $addmodal.modal('hide'); }); // event on Click close button - $addmodal.on('click.usermanagementclose', '#usermanagementclose', function () { + $addmodal.off('click.usermanagementclose').on('click.usermanagementclose', '#usermanagementclose', function () { $addmodal.modal('hide'); }); } - $btnClear.on('click', function () { + $('#btnClear').off('click').on('click', function () { DoClear(APIURL, "UserManagement", (okdata) => { reloaduserDB(); alert("Success clear user management : " + okdata.message); @@ -516,12 +507,12 @@ $(document).ready(function () { alert("Error clear user management : " + errdata.message); }); }); - $btnAdd.click(() => { + $('#btnAdd').off('click').on('click', () => { $addmodal.modal('show'); clearAddModal(); modalshow(false,0); }); - $btnRemove.click(() => { + $('#btnRemove').off('click').on('click', () => { if (window.selecteduserrow) { let cells = window.selecteduserrow.find('td'); /** @type {UserDB} */ @@ -546,7 +537,7 @@ $(document).ready(function () { alert("No user selected"); } }); - $btnEdit.click(() => { + $('#btnEdit').off('click').on('click', () => { if (window.selecteduserrow) { let cells = window.selecteduserrow.find('td'); let index = parseInt(cells.eq(0).text()); @@ -579,10 +570,10 @@ $(document).ready(function () { alert("No user selected"); } }); - $btnExport.click(() => { + $('#btnExport').off('click').on('click', () => { DoExport(APIURL, "user.xlsx", {}); }); - $btnImport.click(() => { + $('#btnImport').off('click').on('click', () => { DoImport(APIURL, (okdata) => { reloaduserDB(); alert("Success import user : " + okdata.message); diff --git a/src/Main.kt b/src/Main.kt index f48fbcb..d66aac8 100644 --- a/src/Main.kt +++ b/src/Main.kt @@ -29,7 +29,7 @@ lateinit var audioPlayer: AudioPlayer val StreamerOutputs: MutableMap = HashMap() lateinit var udpreceiver: UDPReceiver lateinit var tcpreceiver: TCPReceiver -const val version = "0.0.4 (09/10/2025)" +const val version = "0.0.5 (09/10/2025)" // AAS 64 channels const val max_channel = 64 diff --git a/src/database/MariaDB.kt b/src/database/MariaDB.kt index ba4cb88..50811ae 100644 --- a/src/database/MariaDB.kt +++ b/src/database/MariaDB.kt @@ -220,13 +220,15 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (Description, TAG, Category, Language, VoiceType, Path) SELECT Description, TAG, Category, Language, VoiceType, Path FROM ${super.dbName} ORDER BY Description ") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (Description, TAG, Category, Language, VoiceType, Path) SELECT Description, TAG, Category, Language, VoiceType, Path FROM ${super.dbName} ORDER BY Description ") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (Description, TAG, Category, Language, VoiceType, Path) SELECT Description, TAG, Category, Language, VoiceType, Path FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (Description, TAG, Category, Language, VoiceType, Path) SELECT Description, TAG, Category, Language, VoiceType, Path FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by Description" as Any) // reload the local list Get() @@ -420,12 +422,14 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (Description, Language, ANN_ID, Voice_Type, Message_Detail, Message_TAGS) SELECT Description, Language, ANN_ID, Voice_Type, Message_Detail, Message_TAGS FROM ${super.dbName} ORDER BY ANN_ID ") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (Description, Language, ANN_ID, Voice_Type, Message_Detail, Message_TAGS) SELECT Description, Language, ANN_ID, Voice_Type, Message_Detail, Message_TAGS FROM ${super.dbName} ORDER BY ANN_ID ") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (Description, Language, ANN_ID, Voice_Type, Message_Detail, Message_TAGS) SELECT Description, Language, ANN_ID, Voice_Type, Message_Detail, Message_TAGS FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (Description, Language, ANN_ID, Voice_Type, Message_Detail, Message_TAGS) SELECT Description, Language, ANN_ID, Voice_Type, Message_Detail, Message_TAGS FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by Description" as Any) // reload the local list Get() @@ -615,12 +619,14 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (TAG, Language) SELECT TAG, Language FROM ${super.dbName} ORDER BY TAG") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (TAG, Language) SELECT TAG, Language FROM ${super.dbName} ORDER BY TAG") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (TAG, Language) SELECT TAG, Language FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (TAG, Language) SELECT TAG, Language FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by TAG" as Any) // reload the local list Get() @@ -833,12 +839,14 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (Description, Day, Time, Soundpath, Repeat, Enable, BroadcastZones, Language) SELECT Description, Day, Time, Soundpath, Repeat, Enable, BroadcastZones, Language FROM ${super.dbName} ORDER BY Day , Time ") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (Description, Day, Time, Soundpath, Repeat, Enable, BroadcastZones, Language) SELECT Description, Day, Time, Soundpath, Repeat, Enable, BroadcastZones, Language FROM ${super.dbName} ORDER BY Day , Time ") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (Description, Day, Time, Soundpath, Repeat, Enable, BroadcastZones, Language) SELECT Description, Day, Time, Soundpath, Repeat, Enable, BroadcastZones, Language FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (Description, Day, Time, Soundpath, Repeat, Enable, BroadcastZones, Language) SELECT Description, Day, Time, Soundpath, Repeat, Enable, BroadcastZones, Language FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by Day and Time" as Any) // reload the local list Get() @@ -1054,12 +1062,14 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (description, SoundChannel, Box, Relay) SELECT description, SoundChannel, Box, Relay FROM ${super.dbName} ORDER BY description ") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (description, SoundChannel, Box, Relay) SELECT description, SoundChannel, Box, Relay FROM ${super.dbName} ORDER BY description ") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (description, SoundChannel, Box, Relay) SELECT description, SoundChannel, Box, Relay FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (description, SoundChannel, Box, Relay) SELECT description, SoundChannel, Box, Relay FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by description" as Any) // reload the local list Get() @@ -1236,12 +1246,14 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (Date_Time, Source, Type, Message, SB_TAGS, BroadcastZones, Repeat, Language) SELECT Date_Time, Source, Type, Message, SB_TAGS, BroadcastZones, Repeat, Language FROM ${super.dbName} ORDER BY `index` ") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (Date_Time, Source, Type, Message, SB_TAGS, BroadcastZones, Repeat, Language) SELECT Date_Time, Source, Type, Message, SB_TAGS, BroadcastZones, Repeat, Language FROM ${super.dbName} ORDER BY `index` ") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (Date_Time, Source, Type, Message, SB_TAGS, BroadcastZones, Repeat, Language) SELECT Date_Time, Source, Type, Message, SB_TAGS, BroadcastZones, Repeat, Language FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (Date_Time, Source, Type, Message, SB_TAGS, BroadcastZones, Repeat, Language) SELECT Date_Time, Source, Type, Message, SB_TAGS, BroadcastZones, Repeat, Language FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by index" as Any) // reload the local list Get() @@ -1395,12 +1407,14 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (Date_Time, Source, Type, Message, SB_TAGS) SELECT Date_Time, Source, Type, Message, SB_TAGS FROM ${super.dbName} ORDER BY `index` ") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (Date_Time, Source, Type, Message, SB_TAGS) SELECT Date_Time, Source, Type, Message, SB_TAGS FROM ${super.dbName} ORDER BY `index` ") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (Date_Time, Source, Type, Message, SB_TAGS) SELECT Date_Time, Source, Type, Message, SB_TAGS FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (Date_Time, Source, Type, Message, SB_TAGS) SELECT Date_Time, Source, Type, Message, SB_TAGS FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by index" as Any) // reload the local list Get() @@ -1556,12 +1570,14 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (channel, ip) SELECT channel, ip FROM ${super.dbName} ORDER BY `index` ") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (channel, ip) SELECT channel, ip FROM ${super.dbName} ORDER BY `index` ") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (channel, ip) SELECT channel, ip FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (channel, ip) SELECT channel, ip FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by index" as Any) // reload the local list Get() @@ -1769,19 +1785,21 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") statement?.executeUpdate( - "INSERT INTO temp_${super.dbName} (datenya, timenya, machine, description) " + + "INSERT INTO $tempdb_name (datenya, timenya, machine, description) " + "SELECT datenya, timenya, machine, description FROM ${super.dbName} " + "ORDER BY datenya , timenya , machine " ) statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") statement?.executeUpdate( "INSERT INTO ${super.dbName} (datenya, timenya, machine, description) " + - "SELECT datenya, timenya, machine, description FROM temp_${super.dbName}" + "SELECT datenya, timenya, machine, description FROM $tempdb_name" ) - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by datenya, timenya, machine" as Any) // reload the local list Get() @@ -1946,12 +1964,14 @@ class MariaDB( override fun Resort(): Boolean { try { val statement = connection.createStatement() + val tempdb_name = "temp_${super.dbName}" // use a temporary table to reorder the index - statement?.executeUpdate("CREATE TABLE IF NOT EXISTS temp_${super.dbName} LIKE ${super.dbName}") - statement?.executeUpdate("INSERT INTO temp_${super.dbName} (username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones) SELECT username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones FROM ${super.dbName} ORDER BY username ") + statement?.executeUpdate("CREATE TABLE IF NOT EXISTS $tempdb_name LIKE ${super.dbName}") + statement?.executeUpdate("TRUNCATE TABLE $tempdb_name") + statement?.executeUpdate("INSERT INTO $tempdb_name (username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones) SELECT username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones FROM ${super.dbName} ORDER BY username ") statement?.executeUpdate("TRUNCATE TABLE ${super.dbName}") - statement?.executeUpdate("INSERT INTO ${super.dbName} (username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones) SELECT username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones FROM temp_${super.dbName}") - statement?.executeUpdate("DROP TABLE temp_${super.dbName}") + statement?.executeUpdate("INSERT INTO ${super.dbName} (username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones) SELECT username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones FROM $tempdb_name") + statement?.executeUpdate("DROP TABLE $tempdb_name") Logger.info("${super.dbName} table resorted by index" as Any) // reload the local list Get()