diff --git a/pom.xml b/pom.xml index d0ebc1e..405f9ed 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.champonthis abi - 0.1.0 + 0.2.0 abi diff --git a/src/main/java/de/champonthis/abi/buisinesslogic/ContactManager.java b/src/main/java/de/champonthis/abi/buisinesslogic/ContactManager.java index 1987316..bb6b0f9 100644 --- a/src/main/java/de/champonthis/abi/buisinesslogic/ContactManager.java +++ b/src/main/java/de/champonthis/abi/buisinesslogic/ContactManager.java @@ -48,9 +48,17 @@ public class ContactManager { if (StringUtils.isNoneEmpty(line) && !line.startsWith("#") && contactRepository.findByName(line).isEmpty()) { Contact contact = new Contact(); - contact.setName(line); + String[] nameParts = line.split(";"); + contact.setName(nameParts[0]); + if (nameParts.length > 1) { + contact.setSearchName(nameParts[1]); + } else { + contact.setSearchName(nameParts[0]); + } save(contact); - logger.info("Created contact: #" + contact.getId() + ": " + contact.getName()); + logger.info("Created contact: #" + contact.getId() + ": " + contact.getName() + + (contact.getName().equals(contact.getSearchName()) ? "" + : " | " + contact.getSearchName())); } } } @@ -80,9 +88,28 @@ public class ContactManager { public Contact findByLevenshteinDistance(String name, int threshold) { Contact result = null; + String[] nameParts = name.toLowerCase().split(" "); + if (nameParts.length < 2) { + return null; + } for (Contact contact : contactRepository.findAll()) { - int distance = levenshteinDistance.apply(name.toLowerCase(), contact.getName().toLowerCase()); - if (distance <= threshold) { + String[] contactParts = contact.getSearchName().toLowerCase().split(" "); + int matches = 0; + int index = 0; + if (contactParts.length < nameParts.length) { + continue; + } + for (String namePart : nameParts) { + for (int i = index; i < contactParts.length; i++) { + int distance = levenshteinDistance.apply(namePart, contactParts[i]); + if (distance <= threshold) { + matches++; + index = i; + break; + } + } + } + if (matches > 1) { result = contact; break; } diff --git a/src/main/java/de/champonthis/abi/controller/ContactDataController.java b/src/main/java/de/champonthis/abi/controller/ContactDataController.java index bb172e1..ada6c24 100644 --- a/src/main/java/de/champonthis/abi/controller/ContactDataController.java +++ b/src/main/java/de/champonthis/abi/controller/ContactDataController.java @@ -55,7 +55,7 @@ public class ContactDataController { sendToken = true; } - contactData.setEmail(request.getEmail()); + contactData.setEmail(request.getEmail().toLowerCase()); contactData.setPhone(request.getPhone()); if (!contact.getId().equals(reportedBy.getId()) diff --git a/src/main/java/de/champonthis/abi/entity/Contact.java b/src/main/java/de/champonthis/abi/entity/Contact.java index d6caaea..47feb69 100644 --- a/src/main/java/de/champonthis/abi/entity/Contact.java +++ b/src/main/java/de/champonthis/abi/entity/Contact.java @@ -20,7 +20,11 @@ public class Contact { @Column(name = "id", nullable = false) @JsonIgnore private Long id; + @Column(nullable = false) private String name; + @JsonIgnore + @Column(nullable = false) + private String searchName; private String updatedName; @Enumerated(EnumType.STRING) private Commitment committed = Commitment.UNKNOWN; diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 7b04bbc..5ab4800 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -89,7 +89,7 @@
@@ -104,7 +104,7 @@

Hallo ! Falls sich dein Name geändert hat, - kannst du ihn hier anpassen – oder einfach direkt weitermachen. + kannst du ihn hier anpassen - oder einfach direkt weitermachen.

- +
@@ -314,7 +314,7 @@ this.userName = resp.data.name; this.userToken = resp.data.token || null; } else if (resp.status === 404) { - this.stepMsg = 'Sorry, wir konnten dich nicht finden. Schreib deinen Namen bitte genau so, wie er auf dem Abi-T-Shirt stand!'; + this.stepMsg = 'Sorry, wir konnten dich nicht finden. Schreib deinen Namen bitte so, wie er im Abi-Buch stand!'; this.stepMsgType = 'warning'; } else if (resp.status === 208) { this.stepMsg = 'Du hast deine Daten schon eingetragen. Danke dir!'; @@ -395,16 +395,16 @@ if (resp.status === 200) { this.foundKnownContactName = resp.data.name.trim(); if (this.foundKnownContactName == this.yourName) { - this.stepMsg = 'Das bist du selbst – deine Daten hast du ja schon eingetragen!'; + this.stepMsg = 'Das bist du selbst - deine Daten hast du ja schon eingetragen!'; this.stepMsgType = 'warning'; this.showKnownContactData = false; this.knownContactName = '' - return; + } else { + this.knownContactName = this.foundKnownContactName; + this.stepMsg = 'Super, trag bitte die Kontaktdaten ein!'; + this.stepMsgType = 'success'; + this.showKnownContactData = true; } - this.knownContactName = this.foundKnownContactName; - this.stepMsg = 'Super, trag bitte die Kontaktdaten ein!'; - this.stepMsgType = 'success'; - this.showKnownContactData = true; } else if (resp.status === 404) { this.stepMsg = 'Diesen Namen gibt es leider nicht in unserer Liste.'; this.stepMsgType = 'warning';