diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/SettingsController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/SettingsController.java index 87e563e..3f969c7 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/SettingsController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/SettingsController.java @@ -5,10 +5,18 @@ package de.uniluebeck.mi.projmi6.controller; */ import de.uniluebeck.mi.projmi6.Main; +import javafx.beans.binding.Bindings; import javafx.fxml.FXML; import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.TextField; +import javafx.scene.control.TextFormatter; + +import java.net.Inet4Address; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.regex.Pattern; public class SettingsController { @@ -19,12 +27,35 @@ public class SettingsController { } + @FXML + private Button opsServerSave; + + + @FXML + private TextField opsServerIp, opsServerPort; + + + + @FXML private void initialize(){ opsServerIp.setText(Main.OPS_IP); opsServerPort.setText(Integer.toString(Main.OPS_PORT)); + opsServerSave.setOnAction(event -> { + if(validateData(opsServerIp.getText(), opsServerPort.getText())){ + Main.OPS_IP = opsServerIp.getText(); + Main.OPS_PORT = Integer.parseInt(opsServerPort.getText()); - } + Alert alert = new Alert(Alert.AlertType.CONFIRMATION); + alert.setTitle("Speichern erfolgreich"); + alert.setHeaderText("Die OPS-Server-Daten wurden erfolgreich ge\u00e4ndert!"); + alert.setContentText(null); + alert.showAndWait(); + } + }); + + + } private void showMessage(String title, String message) { Alert alert = new Alert(Alert.AlertType.INFORMATION); alert.setTitle("Ung\u00fcltige Daten!"); @@ -33,33 +64,37 @@ public class SettingsController { alert.showAndWait(); } + + private boolean validateData(String server, String portStr){ int port = -1; try{ port = Integer.parseInt(portStr); }catch (Exception e){ - showMessage("Portnummer ist nicht valide", "Die Portnummer muss eine Zahl zwischen 1024 und 65535 sein!"); + showMessage("Portnummer ist nicht valide!", "Die Portnummer muss eine Zahl zwischen 1024 und 65535 sein!"); return false; } if(!(port >= 1024 && port <= 65535)){ - showMessage("Portnummer ist nicht valide", "Die Portnummer muss eine Zahl zwischen 1024 und 65535 sein!"); + showMessage("Portnummer ist nicht valide!", "Die Portnummer muss eine Zahl zwischen 1024 und 65535 sein!"); + return false; + } + if(!validate(server)){ + showMessage("IP-Adresse nicht valide!", "Die IP-Adresse ist nicht g\u00fcltig!"); return false; } - return true; - + return true; } - @FXML - private Button opsServerSave; - - - @FXML - private TextField opsServerIp; - - @FXML - private TextField opsServerPort; + private static final Pattern PATTERN = Pattern.compile( + "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$"); + public static boolean validate(final String ip) { + return PATTERN.matcher(ip).matches(); + } }