|
1 | 1 | package life.qbic.datamanager.views.general.contact; |
2 | 2 |
|
3 | | -import com.vaadin.flow.component.textfield.TextField; |
4 | 3 | import com.vaadin.flow.data.binder.Binder; |
5 | 4 | import com.vaadin.flow.data.binder.ValidationException; |
6 | 5 | import com.vaadin.flow.data.validator.EmailValidator; |
| 6 | +import com.vaadin.flow.data.validator.StringLengthValidator; |
7 | 7 | import com.vaadin.flow.function.SerializablePredicate; |
8 | 8 | import java.util.Objects; |
9 | 9 | import life.qbic.datamanager.views.general.HasBoundField; |
@@ -35,12 +35,6 @@ private BoundContactField(ContactField contactField, |
35 | 35 |
|
36 | 36 | private static void updateStatus(ContactField contactField, boolean isInvalid) { |
37 | 37 | contactField.getElement().setProperty("invalid", isInvalid); |
38 | | - updateStatus(contactField.getEmailTextField(), isInvalid); |
39 | | - updateStatus(contactField.getFullNameTextField(), isInvalid); |
40 | | - } |
41 | | - |
42 | | - private static void updateStatus(TextField textField, boolean isInvalid) { |
43 | | - textField.setInvalid(isInvalid); |
44 | 38 | } |
45 | 39 |
|
46 | 40 | /** |
@@ -102,14 +96,15 @@ private static Binder<ContactContainer> createBinder(SerializablePredicate<Conta |
102 | 96 | ContactField contactField) { |
103 | 97 | Binder<ContactContainer> binder = new Binder<>(ContactContainer.class); |
104 | 98 | binder.setBean(new ContactContainer()); |
105 | | - binder.forField(contactField).withValidator(predicate, "There is still information missing") |
| 99 | + binder.forField(contactField).withValidator(predicate, "Please specify a valid contact") |
106 | 100 | .bind(ContactContainer::getContact, ContactContainer::setContact); |
107 | | - binder.forField(contactField.getEmailTextField()).withValidator( |
108 | | - new EmailValidator("Please provide a valid email address, e.g. my.name@example.com", true)) |
| 101 | + binder.forField(contactField.email()).withValidator( |
| 102 | + new EmailValidator("Please provide a valid email address, e.g. my.name@example.com", false)) |
109 | 103 | .bind(ContactContainer::getEmail, ContactContainer::setEmail); |
110 | | - binder.forField(contactField.getFullNameTextField()) |
| 104 | + binder.forField(contactField.fullName()).withValidator( |
| 105 | + new StringLengthValidator("Please provide the full name of the contact", 2, null)) |
111 | 106 | .bind(ContactContainer::getFullName, ContactContainer::setFullName); |
112 | | - binder.forField(contactField.getOidcSelection()) |
| 107 | + binder.forField(contactField.oidcSelection()) |
113 | 108 | .bind(ContactContainer::getOidcSelection, ContactContainer::setOidcSelection); |
114 | 109 | return binder; |
115 | 110 | } |
@@ -187,20 +182,22 @@ public void setFullName(String fullName) { |
187 | 182 | } |
188 | 183 |
|
189 | 184 | public OrcidEntry getOidcSelection() { |
| 185 | + //We only want to show contact information within the orcid selection combobox if it's originated from the orcidRepository |
| 186 | + if (contact.oidc().isEmpty() || contact.oidcIssuer().isEmpty()) { |
| 187 | + return null; |
| 188 | + } |
190 | 189 | return new OrcidEntry(contact.fullName(), contact.email(), contact.oidc(), |
191 | 190 | contact.oidcIssuer()); |
192 | 191 | } |
193 | 192 |
|
194 | 193 | public void setOidcSelection(OrcidEntry oidcSelection) { |
195 | | - if (contact != null) { |
196 | | - if (oidcSelection != null) { |
197 | | - contact.setOidc(oidcSelection.oidc()); |
198 | | - contact.setOidcIssuer(oidcSelection.oidcIssuer()); |
199 | | - } else { |
200 | | - contact.setOidcIssuer(""); |
201 | | - contact.setOidc(""); |
202 | | - } |
| 194 | + if (oidcSelection == null) { |
| 195 | + return; |
203 | 196 | } |
| 197 | + contact.setFullName(oidcSelection.fullName()); |
| 198 | + contact.setEmail(oidcSelection.emailAddress()); |
| 199 | + contact.setOidc(oidcSelection.oidc()); |
| 200 | + contact.setOidcIssuer(oidcSelection.oidcIssuer()); |
204 | 201 | } |
205 | 202 | } |
206 | 203 | } |
0 commit comments