diff --git a/src/main/java/de/telefonbuch/App.java b/src/main/java/de/telefonbuch/App.java index 5a4fc326c3a85c5446973dd2fc33215c4a971efa..d870811d63514b314e441c76ae1d56578dfed0f9 100644 --- a/src/main/java/de/telefonbuch/App.java +++ b/src/main/java/de/telefonbuch/App.java @@ -1,13 +1,12 @@ package de.telefonbuch; -import de.telefonbuch.model.Kontakt; +import de.telefonbuch.model.Fehler; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import java.io.IOException; -import java.util.TreeMap; /** * JavaFX App @@ -15,10 +14,20 @@ import java.util.TreeMap; public class App extends Application { private static Scene scene; - static TreeMap<String, Kontakt> eintraege = new TreeMap<>(); + /** + * Define debug level + * + * 0: No Debug messages + * 1: most important functions + * 2: less important functions + * 3: all functions + */ + public static int debug = 0; @Override public void start(Stage stage) throws IOException { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true); + scene = new Scene(loadFXML("Telefonbuch")); stage.setScene(scene); stage.show(); diff --git a/src/main/java/de/telefonbuch/TelefonbuchController.java b/src/main/java/de/telefonbuch/TelefonbuchController.java index 5fb7490783ac2a539df77d0f6462af0dd3e33b13..e9c0e8a6f5328fb22d5816002b8c39a97bacb395 100644 --- a/src/main/java/de/telefonbuch/TelefonbuchController.java +++ b/src/main/java/de/telefonbuch/TelefonbuchController.java @@ -8,8 +8,6 @@ import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; import javafx.scene.control.TextField; - -import java.util.ArrayList; import java.util.Optional; /** @@ -67,11 +65,9 @@ public class TelefonbuchController { */ @FXML void loeschen() { - deleteKontakt(true); - if (App.eintraege.size() != 0) { - kontakt = App.eintraege.get(erstelleNavigation(kontakt.getTelefon())[0]); - setKontaktToForm(kontakt); - } + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + + deleteKontakt(); } /** @@ -79,8 +75,10 @@ public class TelefonbuchController { */ @FXML void navWeiter() { - if (App.eintraege.size() != 0) { - kontakt = App.eintraege.get(erstelleNavigation(kontakt.getTelefon())[1]); + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + + if (db.countKontakte() > 0) { + kontakt = db.getKontakt(db.getNavi(kontakt.getTelefon())[2]); setKontaktToForm(kontakt); } } @@ -90,8 +88,10 @@ public class TelefonbuchController { */ @FXML void navZurueck() { - if (App.eintraege.size() != 0) { - kontakt = App.eintraege.get(erstelleNavigation(kontakt.getTelefon())[0]); + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + + if (db.countKontakte() > 0) { + kontakt = db.getKontakt(db.getNavi(kontakt.getTelefon())[0]); setKontaktToForm(kontakt); } } @@ -101,8 +101,9 @@ public class TelefonbuchController { */ @FXML void neuerEintrag() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + neuenKontaktAnlegen(); - deaktiviereButtons(true); } /** @@ -110,6 +111,8 @@ public class TelefonbuchController { */ @FXML void initialize() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 1); + assert txtVorname != null : "fx:id=\"txtVorname\" was not injected: check your FXML file 'telefonbuch.fxml'."; assert txtNachname != null : "fx:id=\"txtNachname\" was not injected: check your FXML file 'telefonbuch.fxml'."; assert txtStrasse != null : "fx:id=\"txtStrasse\" was not injected: check your FXML file 'telefonbuch.fxml'."; @@ -124,8 +127,17 @@ public class TelefonbuchController { this.db = new Datenbank(); + int anzahlKontakte = db.countKontakte(); + + if (anzahlKontakte > 0) { + kontakt = db.getKontakt("first"); + if (!kontakt.getTelefon().equals("")) { + setKontaktToForm(kontakt); + } + } /* Wenn noch keine Einträge vorhanden sind, die Buttons deaktivieren */ - if (App.eintraege.size() == 0) { + else { + kontakt = new Kontakt(); deaktiviereButtons(true); } @@ -235,28 +247,32 @@ public class TelefonbuchController { txtTelefon.focusedProperty().addListener((observableValue, aBoolean, t1) -> { /* Prüfen ob das Feld verändert wurde */ if (!t1) { - if(!kontakt.getTelefon().equals("")) { + if (!kontakt.getTelefon().equals("")) { kontakt.setId(kontakt.getTelefon()); } - /* Wenn die Nummer korrekt ausgefüllt wurde und der Kontakt bereits in der DB enthalten war, den Kontakt löschen und neu anlegen */ - if (!txtTelefon.getText().equals("") && txtTelefon.getText() != null && !txtTelefon.getText().equals(kontakt.getTelefon())) { - if (App.eintraege.containsKey(txtTelefon.getText())) { - fehler.showErrorDialog("error", "", "Es gibt bereits einen Eintrag im Adressbuch mit dieser Telefonnummer. Die Telefonnummer muss eindeutig sein."); - } else { - kontakt.setTelefon(txtTelefon.getText()); - deleteKontakt(false); - saveKontakt(); - } - } + + boolean setTelefon = kontakt.setTelefon(txtTelefon.getText()); + /* Wenn das Feld noch leer ist oder nicht den Regeln entspricht, Fehler ausgeben */ - if (txtTelefon.getText() == null || !kontakt.setTelefon(txtTelefon.getText())) { + if (!setTelefon || txtTelefon.getText() == null) { setFieldError(txtTelefon, true); fehler.showErrorDialog("error", "", "Die Telefonnummer muss mindestens 3 und maximal 30 Ziffern lang sein."); } /* Wenn alles korrekt gelaufen ist, Kontakt speichern und Fehler zurück setzen */ else { - saveKontakt(); + setFieldError(txtTelefon, false); + + /* Wenn die Nummer korrekt ausgefüllt wurde und der Kontakt bereits in der DB enthalten war, den Kontakt löschen und neu anlegen */ + if (!txtTelefon.getText().equals("") && txtTelefon.getText() != null) { + Kontakt tempKontakt = db.getKontakt(txtTelefon.getText()); + if (tempKontakt.getTelefon().equals(txtTelefon.getText())) { + fehler.showErrorDialog("error", "", "Es gibt bereits einen Eintrag im Adressbuch mit dieser Telefonnummer. Die Telefonnummer muss eindeutig sein."); + } else { + saveKontakt(); + kontakt.setId(kontakt.getTelefon()); + } + } } } }); @@ -266,29 +282,38 @@ public class TelefonbuchController { * Legt ein neues Kontakt Object an */ private void neuenKontaktAnlegen() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + resetForm(); } /** * Kontakt aus Treemap loeschen - * - * @param resetForm : boolean : Soll das Formular auch geleert werden? */ - private void deleteKontakt(boolean resetForm) { - - if (resetForm) { - Alert alert = new Alert(Alert.AlertType.CONFIRMATION); - alert.setContentText("Löschen bestätigen"); - alert.setHeaderText(null); - alert.setContentText("Möchten Sie den aktuellen Eintrag wirklich löschen?"); - Optional<ButtonType> op = alert.showAndWait(); - - if (op.isPresent() && op.get() == ButtonType.OK) { - App.eintraege.remove(txtTelefon.getText()); + private void deleteKontakt() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + + Alert alert = new Alert(Alert.AlertType.CONFIRMATION); + alert.setContentText("Löschen bestätigen"); + alert.setHeaderText(null); + alert.setContentText("Möchten Sie den aktuellen Eintrag wirklich löschen?"); + Optional<ButtonType> op = alert.showAndWait(); + + if (op.isPresent() && op.get() == ButtonType.OK) { + this.db.deleteKontakt(kontakt.getTelefon()); + + if (db.countKontakte() > 0) { + kontakt = db.getKontakt("first"); + if (!kontakt.getTelefon().isEmpty()) { + setKontaktToForm(kontakt); + } + } + /* Wenn noch keine Einträge vorhanden sind, die Buttons deaktivieren */ + else { + kontakt = new Kontakt(); + deaktiviereButtons(true); resetForm(); } - } else { - App.eintraege.remove(txtTelefon.getText()); } } @@ -296,10 +321,13 @@ public class TelefonbuchController { * Kontakt in die Treemap speichern */ private void saveKontakt() { - System.out.println(kontakt.toString()); + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 1); + if (!kontakt.getTelefon().equals("")) { - App.eintraege.put(kontakt.getTelefon(), kontakt); + new Fehler().debug("Contact not empty", false); + db.addKontakt(kontakt); + kontakt.setId(kontakt.getTelefon()); } } @@ -307,6 +335,8 @@ public class TelefonbuchController { * Kontrollieren ob alle Felder fehlerfrei sind. Wenn ja, die Buttons wieder aktivieren. */ private void checkFieldErrors() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 1); + if (!txtVorname.getStyle().equals("-fx-control-inner-background: #ff000040;") && !txtNachname.getStyle().equals("-fx-control-inner-background: #ff000040;") && !txtStrasse.getStyle().equals("-fx-control-inner-background: #ff000040;") && @@ -326,6 +356,8 @@ public class TelefonbuchController { * @param set : true:Fehler false:Kein Fehler */ private void setFieldError(TextField field, boolean set) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 1); + if (set) { field.setStyle("-fx-control-inner-background: #ff000040;"); deaktiviereButtons(true); @@ -335,67 +367,14 @@ public class TelefonbuchController { } } - /** - * Suche die naechste und die letzte Nummer aus der Treemap - * - * @param telefon : String : Gesuchte Telefonnummer - * @return String[] : 0:vorheriger Eintrag 1:Nächster Eintrag - */ - private String[] erstelleNavigation(String telefon) { - /* Initialisieren des Rueckgabe Arrays */ - String[] rueckgabe = new String[2]; - - /* Arraylist als temporaeren Speicher anlegen */ - - /* Kopiert die Keys (Telefonnummern) der Treemap in eine Arraylist zum einfacheren durchsuchen */ - ArrayList<String> telefonbuch = new ArrayList<>(App.eintraege.keySet()); - - /* - Uebergebene Telefonnummer ist nicht gesetzt (Leeres Formular) oder existiert nicht - Zurueck = letzter Eintrag | Weiter = erster Eintrag - */ - if (telefon.equals("") || !telefonbuch.contains(telefon)) { - /* Pruefung ob mehr als ein Eintrag vorhanden */ - if (telefonbuch.size() > 1) { - rueckgabe[0] = telefonbuch.get(telefonbuch.size() - 1); - rueckgabe[1] = telefonbuch.get(0); - } - /* Nur ein Eintrag vorhanden also diesen Eintrag als zurueck/weiter zurueck geben */ - else { - rueckgabe[0] = rueckgabe[1] = telefonbuch.get(0); - } - } else { - /* Das Telefonbuch hat nur einen Eintrag */ - if (telefonbuch.size() == 1) { - rueckgabe[0] = telefonbuch.get(0); - rueckgabe[1] = telefonbuch.get(0); - } - /* Gesuchte Nummer ist an Index 0 */ - else if (telefonbuch.indexOf(telefon) == 0) { - rueckgabe[0] = telefonbuch.get(telefonbuch.size() - 1); - rueckgabe[1] = telefonbuch.get(telefonbuch.indexOf(telefon) + 1); - } - /* Gesuchte Nummer ist am letzten Index */ - else if (telefonbuch.indexOf(telefon) == telefonbuch.size() - 1) { - rueckgabe[0] = telefonbuch.get(telefonbuch.indexOf(telefon) - 1); - rueckgabe[1] = telefonbuch.get(0); - } - /* Gesuchte Nummer befindet sich irgendwo im Array und nicht am ersten/letzten Index */ - else { - rueckgabe[0] = telefonbuch.get(telefonbuch.indexOf(telefon) - 1); - rueckgabe[1] = telefonbuch.get(telefonbuch.indexOf(telefon) + 1); - } - } - - return rueckgabe; - } - /** * Loescht das Formular und erstellt ein neues Kontakt Objekt */ private void resetForm() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + /* Wenn keine Einträge mehr vorhanden sind, auch die Buttons deaktivieren */ - if (App.eintraege.size() == 0) { + if (db.countKontakte() == 0) { deaktiviereButtons(true); } kontakt = new Kontakt(); @@ -414,6 +393,8 @@ public class TelefonbuchController { * @param kontakt : Kontakt : Kontakt Objekt */ private void setKontaktToForm(Kontakt kontakt) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + txtVorname.setText(kontakt.getVorname()); txtNachname.setText(kontakt.getNachname()); txtStrasse.setText(kontakt.getStrasse()); @@ -429,6 +410,8 @@ public class TelefonbuchController { * @param deaktivieren : boolean */ private void deaktiviereButtons(boolean deaktivieren) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + if (deaktivieren) { btnLoeschen.setDisable(true); btnNaviLinks.setDisable(true); diff --git a/src/main/java/de/telefonbuch/model/Datenbank.java b/src/main/java/de/telefonbuch/model/Datenbank.java index f51e83264bbabeec86cf1a05bad144caacefbf2f..702b5197e6e1ba6306115d8f0174bbc092e5466e 100644 --- a/src/main/java/de/telefonbuch/model/Datenbank.java +++ b/src/main/java/de/telefonbuch/model/Datenbank.java @@ -7,6 +7,8 @@ public class Datenbank { private Connection con; public Datenbank() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + try { this.connect(); this.createTables(); @@ -16,6 +18,8 @@ public class Datenbank { } private void createTables() throws SQLException { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 1); + Statement stmt = this.con.createStatement(); String createTable = "CREATE TABLE IF NOT EXISTS \"kontakte\" (" + "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + @@ -27,20 +31,24 @@ public class Datenbank { "ort VARCHAR(50) NULL, " + "telefon VARCHAR(30) UNIQUE NULL" + ");"; - System.out.println(stmt.execute(createTable)); + stmt.execute(createTable); } /** * Verbindung zur Datenbank aufbauen */ private void connect() throws SQLException { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 1); + String datenbankdatei = "c:\\temp\\telefonbuch.sqlite"; this.con = DriverManager.getConnection("jdbc:sqlite:" + datenbankdatei); - System.out.println("Erfolgreich mit Datenbank verbunden."); } public void addKontakt(Kontakt kontakt) { + + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 1); + try { Statement stmt = this.con.createStatement(); @@ -48,15 +56,15 @@ public class Datenbank { ResultSet checkResult = stmt.executeQuery(checkKontakt); int rows = 0; - while(checkResult.next()) { + while (checkResult.next()) { rows++; } - System.out.println("Rows: " + rows); - String insertKontakt; if (rows == 1) { + new Fehler().debug("Updating contact", false); + insertKontakt = "UPDATE kontakte SET " + "vorname=\"" + kontakt.getVorname() + "\", " + "nachname=\"" + kontakt.getNachname() + "\", " + @@ -65,8 +73,10 @@ public class Datenbank { "plz=\"" + kontakt.getPlz() + "\", " + "ort=\"" + kontakt.getOrt() + "\", " + "telefon=\"" + kontakt.getTelefon() + "\" " + - " WHERE telefon=" + kontakt.getId() + ";"; + " WHERE telefon=\"" + kontakt.getId() + "\";"; } else { + new Fehler().debug("Insert new contact", false); + insertKontakt = "INSERT INTO kontakte (vorname, nachname, strasse, hnr, plz, ort, telefon) VALUES (" + "\"" + kontakt.getVorname() + "\", " + "\"" + kontakt.getNachname() + "\", " + @@ -77,11 +87,138 @@ public class Datenbank { "\"" + kontakt.getTelefon() + "\" " + ");"; } - System.out.println(insertKontakt); - System.out.println(stmt.execute(insertKontakt)); + new Fehler().debug(insertKontakt, false); + + stmt.execute(insertKontakt); } catch (SQLException e) { e.printStackTrace(); } + } + + public void deleteKontakt(String telefon) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + + try { + Statement stmt = this.con.createStatement(); + + String sql = " DELETE FROM kontakte" + + " WHERE telefon=\"" + telefon + "\";"; + stmt.execute(sql); + + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public Kontakt getKontakt(String telefon) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + + Kontakt kontakt = new Kontakt(); + String sql; + + try { + Statement stmt = this.con.createStatement(); + + if (telefon.equals("first")) { + sql = "SELECT * " + + "FROM kontakte " + + "LIMIT 1;"; + } else { + sql = "SELECT * " + + "FROM kontakte " + + "WHERE telefon=\"" + telefon + "\";"; + } + ResultSet rs = stmt.executeQuery(sql); + + while (rs.next()) { + if (rs.getString("telefon").equals(telefon) || telefon.equals("first")) { + kontakt.setId(rs.getString("telefon")); + kontakt.setVorname(rs.getString("vorname")); + kontakt.setNachname(rs.getString("nachname")); + kontakt.setStrasse(rs.getString("strasse")); + kontakt.setHausnummer(rs.getString("hnr")); + kontakt.setPlz(rs.getString("plz")); + kontakt.setOrt(rs.getString("ort")); + kontakt.setTelefon(rs.getString("telefon")); + + if (telefon.equals("first")) { + break; + } + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + + return kontakt; + } + + public String[] getNavi(String telefon) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + + String[] naviResult = new String[3]; + + try { + Statement stmt = this.con.createStatement(); + String sql = "SELECT\n" + + " CASE\n" + + " WHEN LAG(telefon) OVER (ORDER BY nachname) IS NULL THEN (\n" + + " SELECT telefon\n" + + " FROM kontakte\n" + + " ORDER BY nachname DESC\n" + + " LIMIT 1\n" + + " )\n" + + " ELSE LAG(telefon) OVER (ORDER BY nachname)\n" + + " END last,\n" + + " telefon AS current,\n" + + " CASE\n" + + " WHEN LEAD(telefon) OVER (ORDER BY nachname) IS NULL THEN (\n" + + " SELECT telefon\n" + + " FROM kontakte\n" + + " ORDER BY nachname ASC\n" + + " LIMIT 1\n" + + " )\n" + + " ELSE LEAD(telefon) OVER (ORDER BY nachname)\n" + + " END next\n" + + "FROM kontakte\n" + + "ORDER BY nachname ASC;"; + + ResultSet rs = stmt.executeQuery(sql); + + while (rs.next()) { + if (rs.getString("current").equals(telefon)) { + naviResult[0] = rs.getString("last"); + naviResult[1] = rs.getString("current"); + naviResult[2] = rs.getString("next"); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } + + return naviResult; + } + + public int countKontakte() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 2); + + int intResult = 0; + + try { + Statement stmt = this.con.createStatement(); + + String sql = " SELECT COUNT(*) AS count" + + " FROM kontakte;"; + ResultSet rs = stmt.executeQuery(sql); + + intResult = rs.getInt("count"); + + } catch (SQLException e) { + e.printStackTrace(); + } + + new Fehler().debug("Result: " + intResult, false); + return intResult; } } diff --git a/src/main/java/de/telefonbuch/model/Fehler.java b/src/main/java/de/telefonbuch/model/Fehler.java index 857ce28ccf451c8deef1362b71cd673eabadd48d..2aa434c1a55723ef87997dc29e407d3d86ee883b 100644 --- a/src/main/java/de/telefonbuch/model/Fehler.java +++ b/src/main/java/de/telefonbuch/model/Fehler.java @@ -1,5 +1,6 @@ package de.telefonbuch.model; +import de.telefonbuch.App; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; @@ -8,6 +9,9 @@ import javafx.scene.control.Alert.AlertType; */ public class Fehler { + private String functionPrefix = "- "; + private String messagePrefix = "--> "; + /** * Zeige Fehler Dialog * @@ -16,10 +20,12 @@ public class Fehler { * @param message : Nachricht der Meldung */ public void showErrorDialog(String type, String subject, String message) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true); + Alert alert; /* Der Titel darf auch als leerer String übergeben werden, dann wird ein Default gesetzt */ - if(subject.equals("")) { + if (subject.equals("")) { subject = "Es ist ein Fehler aufgetreten"; } @@ -46,4 +52,30 @@ public class Fehler { /* Zeige den Dialog an */ alert.showAndWait(); } -} + + public void debug(String message, boolean isFunction) { + if (App.debug != 0) { + if (isFunction) { + System.out.println(functionPrefix + message); + } else { + System.out.println(messagePrefix + message); + } + } + } + + public void debug(String message, boolean isFunction, int debugLevel) { + + if (App.debug != 0 && (App.debug >= debugLevel || App.debug == 3) ) { + + if (isFunction) { + + System.out.println(functionPrefix + message); + + } else { + + System.out.println(messagePrefix + message); + + } + } + } +} \ No newline at end of file diff --git a/src/main/java/de/telefonbuch/model/Kontakt.java b/src/main/java/de/telefonbuch/model/Kontakt.java index 2d88a3f52ffb73c41ceba45c2f27f9413e5f3054..5bba9b80c0ce5efb04646ea998f6266c87ee4e28 100644 --- a/src/main/java/de/telefonbuch/model/Kontakt.java +++ b/src/main/java/de/telefonbuch/model/Kontakt.java @@ -15,8 +15,13 @@ public class Kontakt { private String id = ""; //endregion - // region 1 Setter + // region 1 Konstruktor + public Kontakt() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true); + } + // endregion + // region 2 Setter /** * Setzt den Vornamen. Dieser darf maximal 50 Zeichen lang sein * Gibt im erfolgs Fall true und bei einem Fehler false zurück @@ -24,6 +29,8 @@ public class Kontakt { * @return boolean */ public boolean setVorname(String vorname) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + if (vorname != null && vorname.length() <= 50) { this.vorname = vorname; return true; @@ -39,6 +46,8 @@ public class Kontakt { * @return boolean */ public boolean setNachname(String nachname) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + if (nachname != null && nachname.length() <= 50) { this.nachname = nachname; return true; @@ -54,6 +63,8 @@ public class Kontakt { * @return boolean */ public boolean setStrasse(String strasse) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + if (strasse != null && strasse.length() <= 50) { this.strasse = strasse; return true; @@ -69,6 +80,8 @@ public class Kontakt { * @return boolean */ public boolean setHausnummer(String hausnummer) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + if (hausnummer != null && hausnummer.length() <= 10) { this.hausnummer = hausnummer; return true; @@ -84,6 +97,8 @@ public class Kontakt { * @return boolean */ public boolean setPlz(String plz) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + if (plz != null && plz.length() == 5) { this.plz = plz; return true; @@ -99,6 +114,8 @@ public class Kontakt { * @return boolean */ public boolean setOrt(String ort) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + if (ort != null && ort.length() <= 50) { this.ort = ort; return true; @@ -114,6 +131,8 @@ public class Kontakt { * @return boolean */ public boolean setTelefon(String telefon) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + if (telefon != null && telefon.length() <= 30 && telefon.length() > 2 && isNumeric(telefon)) { this.telefon = telefon; return true; @@ -123,12 +142,14 @@ public class Kontakt { } //endregion - // region 2. Getter + // region 3 Getter /** * Gibt den Vornamen zurück * @return : String */ public String getVorname() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return vorname; } @@ -137,6 +158,8 @@ public class Kontakt { * @return : String */ public String getNachname() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return nachname; } @@ -145,6 +168,8 @@ public class Kontakt { * @return : String */ public String getStrasse() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return strasse; } @@ -153,6 +178,8 @@ public class Kontakt { * @return : String */ public String getHausnummer() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return hausnummer; } @@ -161,6 +188,8 @@ public class Kontakt { * @return : String */ public String getPlz() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return plz; } @@ -169,6 +198,8 @@ public class Kontakt { * @return : String */ public String getOrt() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return ort; } @@ -177,24 +208,47 @@ public class Kontakt { * @return : String */ public String getTelefon() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return telefon; } //endregion - //region 3 Functions + //region 4 Functions /** * Prueft ob der String ausschließlich aus Zahlen besteht */ private boolean isNumeric(String s) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return s != null && s.matches("[-+]?\\d*\\.?\\d+"); } public String getId() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + return id; } public void setId(String id) { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + this.id = id; } + + @Override + public String toString() { + new Fehler().debug(this.getClass().getName() + "." + new Throwable().getStackTrace()[0].getMethodName(), true, 3); + + String strResult = "Vorname: " + this.getVorname() + + " Nachname: " + this.getNachname() + + " Straße: " + this.getStrasse() + + " Hnr: " + this.getHausnummer() + + " Plz: " + this.getPlz() + + " Ort: " + this.getOrt() + + " Telefon: " + this.getTelefon(); + + return strResult; + } //endregion }