From 6092ff882a870613817270dc0fb9a338b12125c8 Mon Sep 17 00:00:00 2001 From: Marc Froehlich Date: Wed, 5 Aug 2026 01:18:41 +0200 Subject: [PATCH] added project Band enum from Win-Test band IDs --- .../kst4contest/controller/DBController.java | 4 +- .../controller/ReadUDPByWintestThread.java | 24 ++--- .../view/Kst4ContestApplication.java | 90 +++++++++++++------ udpReaderBackup.txt | 11 ++- 4 files changed, 88 insertions(+), 41 deletions(-) diff --git a/src/main/java/kst4contest/controller/DBController.java b/src/main/java/kst4contest/controller/DBController.java index d6523b0..3c32db5 100644 --- a/src/main/java/kst4contest/controller/DBController.java +++ b/src/main/java/kst4contest/controller/DBController.java @@ -36,8 +36,8 @@ public class DBController { * Number of milliseconds after which worked/not-QRV data is considered outdated * and therefore automatically reset. */ - private static final long WORKED_DATA_EXPIRATION_IN_MILLISECONDS = 65L * 60L * 60L * 1000L; - + private static final long WORKED_DATA_EXPIRATION_IN_MILLISECONDS = + 3L * 24L * 60L * 60L * 1000L; /** * Database schema version that includes the raw-callsign normalization migration * marker. The marker is stored in SQLite PRAGMA user_version so the expensive diff --git a/src/main/java/kst4contest/controller/ReadUDPByWintestThread.java b/src/main/java/kst4contest/controller/ReadUDPByWintestThread.java index f337ded..8fe6e52 100644 --- a/src/main/java/kst4contest/controller/ReadUDPByWintestThread.java +++ b/src/main/java/kst4contest/controller/ReadUDPByWintestThread.java @@ -303,17 +303,19 @@ public class ReadUDPByWintestThread extends Thread { return null; } - switch (bandId.trim()) { - case "12": return Band.B_144; - case "14": return Band.B_432; - case "16": return Band.B_1296; - case "17": return Band.B_2320; - case "18": return Band.B_3400; - case "19": return Band.B_5760; - case "20": return Band.B_10G; - case "21": return Band.B_24G; - default: return null; - } + return switch (bandId.trim()) { + case "10" -> Band.B_50; + case "11" -> Band.B_70; + case "12" -> Band.B_144; + case "14" -> Band.B_432; + case "16" -> Band.B_1296; + case "17" -> Band.B_2320; + case "18" -> Band.B_3400; + case "19" -> Band.B_5760; + case "20" -> Band.B_10G; + case "21" -> Band.B_24G; + default -> null; + }; } /** diff --git a/src/main/java/kst4contest/view/Kst4ContestApplication.java b/src/main/java/kst4contest/view/Kst4ContestApplication.java index b1bad7f..07914f0 100644 --- a/src/main/java/kst4contest/view/Kst4ContestApplication.java +++ b/src/main/java/kst4contest/view/Kst4ContestApplication.java @@ -10915,9 +10915,15 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL // CheckBox chkBxEnableTRXMsgbyUCX = new CheckBox(); grdPnlInternalDBPane.add( - generateLabeledSeparator(100, - "Change the settings of the internal database (worked stations, reset before a new contest!)"), - 0, 0, 2, 1); + generateLabeledSeparator( + 100, + "Internal contest data: worked stations, NOT-QRV tags and worked grids" + ), + 0, + 0, + 2, + 1 + ); // grdPnlShorts.add(lblEnableTRXMsgbyUCX, 0, 1); // grdPnlShorts.add(chkBxEnableTRXMsgbyUCX, 1, 1); @@ -10940,34 +10946,64 @@ public class Kst4ContestApplication extends Application implements StatusUpdateL } }); - Button btn_wkdDB_reset = new Button("Reset worked-tags and NOT-QRV-tags"); - btn_wkdDB_reset.setOnAction(new EventHandler() { - @Override - public void handle(ActionEvent event) { + Button btn_wkdDB_reset = new Button("Reset worked, NOT-QRV and grid data..."); + btn_wkdDB_reset.setTooltip(new Tooltip( + "Manual reset of all contest-related database flags. " + + "This is normally not required because entries expire automatically after three days." + )); - int affectedLines; - affectedLines = chatcontroller.getDbHandler().resetWorkedDataInDB(); - chatcontroller.resetWorkedAndQrvInfoInGuiLists(); - chatcontroller.refreshWorkedStateAndDatabaseListFromDatabase(); - finalTblVwWorked.refresh(); + btn_wkdDB_reset.setOnAction(event -> { + Alert confirmation = new Alert(AlertType.CONFIRMATION); + confirmation.setTitle("Reset contest data"); + confirmation.setHeaderText("Reset all worked, NOT-QRV and grid data?"); + confirmation.setContentText( + "This removes all worked markings, manually assigned NOT-QRV tags " + + "and stored worked-grid information. The operation cannot be undone.\n\n" + + "A reset before every contest is normally not required because these data " + + "expire automatically after three days." + ); - if (affectedLines >= 0) { + ButtonType resetButton = new ButtonType( + "Reset data", + ButtonBar.ButtonData.OK_DONE + ); + ButtonType cancelButton = new ButtonType( + "Cancel", + ButtonBar.ButtonData.CANCEL_CLOSE + ); + confirmation.getButtonTypes().setAll(resetButton, cancelButton); - Alert a = new Alert(AlertType.INFORMATION); - - a.setTitle("Worked data"); - a.setHeaderText("All worked data had been reset. " + affectedLines - + " callsign entries had been updated."); - a.show(); - - } else { - Alert a = new Alert(AlertType.INFORMATION); - - a.setTitle("Worked data"); - a.setHeaderText("Something went wrong, DB have to be rebuilt or other error!"); - a.show(); - } + if (confirmation.showAndWait().orElse(cancelButton) != resetButton) { + return; } + + int affectedLines = chatcontroller.getDbHandler().resetWorkedDataInDB(); + + if (affectedLines < 0) { + Alert error = new Alert(AlertType.ERROR); + error.setTitle("Reset contest data"); + error.setHeaderText("The contest data could not be reset."); + error.setContentText( + "The internal database may be unavailable or inconsistent. " + + "No successful reset was confirmed." + ); + error.show(); + return; + } + + chatcontroller.resetWorkedAndQrvInfoInGuiLists(); + chatcontroller.refreshWorkedStateAndDatabaseListFromDatabase(); + finalTblVwWorked.refresh(); + + Alert information = new Alert(AlertType.INFORMATION); + information.setTitle("Reset contest data"); + information.setHeaderText("The contest data were reset."); + information.setContentText( + affectedLines + + " callsign database entries were updated. " + + "Worked-grid data were cleared as well." + ); + information.show(); }); HBox hbxwkdShortBtnBox = new HBox(); diff --git a/udpReaderBackup.txt b/udpReaderBackup.txt index 071924c..0dae2e6 100644 --- a/udpReaderBackup.txt +++ b/udpReaderBackup.txt @@ -2370,4 +2370,13 @@ DO5SA;unknown;unknown;StringProperty [value: null]; wkd true; wkd144 true; wkd43 9A2HM;unknown;unknown;StringProperty [value: null]; wkd true; wkd144 false; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; null 9A2HM;null;null;StringProperty [value: null]; wkd true; wkd144 false; wkd432true; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; null 9A2HM;null;null;StringProperty [value: null]; wkd true; wkd144 false; wkd432false; wkd1240false; wkd2300true; wkd3400false; wkd5600false; wkd10Gfalse ; null -OV3T;Thomas;JO46CM;StringProperty [value: null]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz \ No newline at end of file +OV3T;Thomas;JO46CM;StringProperty [value: null]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +OZ1ALS;144307;JO44XX;StringProperty [value: 144.307]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +OZ1FDH;Claus;JO55QX;StringProperty [value: null]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +OZ2AR;FRS Club;JO65BT;StringProperty [value: 144.243]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +SM7NCL;Chris;JO66JI;StringProperty [value: 144.255]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +OZ1DLD/P;Bent;JO45SK;StringProperty [value: 144.285]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +SM6VTZ;Chris 2/70/23/3;JO58UJ;StringProperty [value: 144.135]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +OZ7KJ;Skive Club;JO46ML;StringProperty [value: 144.225]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +OV3T;Thomas;JO46CM;StringProperty [value: null]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz +OZ6TY;Henning;JO55XE;StringProperty [value: 144.196]; wkd true; wkd144 true; wkd432false; wkd1240false; wkd2300false; wkd3400false; wkd5600false; wkd10Gfalse ; 2: 144/432 MHz \ No newline at end of file