From c863f7e6d6e7a1c7f2e9ed1df22b02fbab319752 Mon Sep 17 00:00:00 2001
From: Dennis Eisold <de@itstall.de>
Date: Thu, 14 Nov 2019 15:33:37 +0100
Subject: [PATCH] =?UTF-8?q?Nummer=20=C3=A4ndern=20ist=20b=C3=A4=C3=A4?=
 =?UTF-8?q?=C3=A4=C3=A4hhhh?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../de/telefonbuch/TelefonbuchController.java |  7 ++-
 .../java/de/telefonbuch/model/Datenbank.java  | 48 ++++++++++++++-----
 .../java/de/telefonbuch/model/Kontakt.java    | 17 ++++++-
 3 files changed, 56 insertions(+), 16 deletions(-)

diff --git a/src/main/java/de/telefonbuch/TelefonbuchController.java b/src/main/java/de/telefonbuch/TelefonbuchController.java
index 9a0d110..5fb7490 100644
--- a/src/main/java/de/telefonbuch/TelefonbuchController.java
+++ b/src/main/java/de/telefonbuch/TelefonbuchController.java
@@ -235,11 +235,15 @@ public class TelefonbuchController {
 		txtTelefon.focusedProperty().addListener((observableValue, aBoolean, t1) -> {
 			/* Prüfen ob das Feld verändert wurde */
 			if (!t1) {
+				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();
 					}
@@ -286,14 +290,13 @@ public class TelefonbuchController {
 		} else {
 			App.eintraege.remove(txtTelefon.getText());
 		}
-
-
 	}
 
 	/**
 	 * Kontakt in die Treemap speichern
 	 */
 	private void saveKontakt() {
+		System.out.println(kontakt.toString());
 		if (!kontakt.getTelefon().equals("")) {
 			App.eintraege.put(kontakt.getTelefon(), kontakt);
 			db.addKontakt(kontakt);
diff --git a/src/main/java/de/telefonbuch/model/Datenbank.java b/src/main/java/de/telefonbuch/model/Datenbank.java
index 11193ca..f51e832 100644
--- a/src/main/java/de/telefonbuch/model/Datenbank.java
+++ b/src/main/java/de/telefonbuch/model/Datenbank.java
@@ -1,9 +1,6 @@
 package de.telefonbuch.model;
 
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.sql.Statement;
+import java.sql.*;
 
 public class Datenbank {
 
@@ -47,15 +44,40 @@ public class Datenbank {
 		try {
 			Statement stmt = this.con.createStatement();
 
-			String insertKontakt = "INSERT OR REPLACE INTO kontakte (vorname, nachname, strasse, hnr, plz, ort, telefon) VALUES (" +
-					"\"" + kontakt.getVorname() + "\", " +
-					"\"" + kontakt.getNachname() + "\", " +
-					"\"" + kontakt.getStrasse() + "\", " +
-					"\"" + kontakt.getHausnummer() + "\", " +
-					"\"" + kontakt.getPlz() + "\", " +
-					"\"" + kontakt.getOrt() + "\", " +
-					"\"" + kontakt.getTelefon() + "\" " +
-					");";
+			String checkKontakt = "SELECT id FROM kontakte WHERE telefon=\"" + kontakt.getId() + "\";";
+			ResultSet checkResult = stmt.executeQuery(checkKontakt);
+
+			int rows = 0;
+			while(checkResult.next()) {
+				rows++;
+			}
+
+			System.out.println("Rows: " + rows);
+
+			String insertKontakt;
+
+			if (rows == 1) {
+				insertKontakt = "UPDATE kontakte SET " +
+						"vorname=\"" + kontakt.getVorname() + "\", " +
+						"nachname=\"" + kontakt.getNachname() + "\", " +
+						"strasse=\"" + kontakt.getStrasse() + "\", " +
+						"hnr=\"" + kontakt.getHausnummer() + "\", " +
+						"plz=\"" + kontakt.getPlz() + "\", " +
+						"ort=\"" + kontakt.getOrt() + "\", " +
+						"telefon=\"" + kontakt.getTelefon() + "\" " +
+						" WHERE telefon=" + kontakt.getId() + ";";
+			} else {
+				insertKontakt = "INSERT INTO kontakte (vorname, nachname, strasse, hnr, plz, ort, telefon) VALUES (" +
+						"\"" + kontakt.getVorname() + "\", " +
+						"\"" + kontakt.getNachname() + "\", " +
+						"\"" + kontakt.getStrasse() + "\", " +
+						"\"" + kontakt.getHausnummer() + "\", " +
+						"\"" + kontakt.getPlz() + "\", " +
+						"\"" + kontakt.getOrt() + "\", " +
+						"\"" + kontakt.getTelefon() + "\" " +
+						");";
+			}
+			System.out.println(insertKontakt);
 			System.out.println(stmt.execute(insertKontakt));
 		} catch (SQLException e) {
 			e.printStackTrace();
diff --git a/src/main/java/de/telefonbuch/model/Kontakt.java b/src/main/java/de/telefonbuch/model/Kontakt.java
index 87e0cbc..2d88a3f 100644
--- a/src/main/java/de/telefonbuch/model/Kontakt.java
+++ b/src/main/java/de/telefonbuch/model/Kontakt.java
@@ -5,7 +5,14 @@ package de.telefonbuch.model;
  */
 public class Kontakt {
 	// region 0 Variables
-	private String vorname, nachname, strasse, hausnummer, plz, ort, telefon = "";
+	private String vorname = "";
+	private String nachname = "";
+	private String strasse = "";
+	private String hausnummer = "";
+	private String plz = "";
+	private String ort = "";
+	private String telefon = "";
+	private String id = "";
 	//endregion
 
 	// region 1 Setter
@@ -181,5 +188,13 @@ public class Kontakt {
 	private boolean isNumeric(String s) {
 		return s != null && s.matches("[-+]?\\d*\\.?\\d+");
 	}
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
 	//endregion
 }
-- 
GitLab