Repository navigation
Expand file tree
/
Copy pathLoginFormController.java
More file actions
110 lines (90 loc) · 3.59 KB
/
Copy pathLoginFormController.java
File metadata and controls
110 lines (90 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package com.DesktopApplicationClientJava.controllers;
import com.DesktopApplicationClientJava.controllers.utils.Controller;
import com.DesktopApplicationClientJava.entities.Role;
import com.DesktopApplicationClientJava.entities.User;
import com.DesktopApplicationClientJava.utils.FieldError;
import com.DesktopApplicationClientJava.validation.EmailValidator;
import com.DesktopApplicationClientJava.validation.FirstNameValidator;
import com.DesktopApplicationClientJava.validation.LastNameValidator;
import com.DesktopApplicationClientJava.validation.PasswordValidator;
import com.DesktopApplicationClientJava.validation.ThirdNameValidator;
import com.DesktopApplicationClientJava.validation.utils.Validator;
import java.util.UUID;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
public class LoginFormController extends Controller {
@FXML private TextField firstNameField;
@FXML private Label firstNameErrorLabel;
private FieldError firstNameError;
@FXML private TextField lastNameField;
@FXML private Label lastNameErrorLabel;
private FieldError lastNameError;
@FXML private TextField thirdNameField;
@FXML private Label thirdNameErrorLabel;
private FieldError thirdNameError;
@FXML private TextField emailField;
@FXML private Label emailErrorLabel;
private FieldError emailError;
@FXML private PasswordField passwordField;
@FXML private Label passwordErrorLabel;
private FieldError passwordError;
@FXML private Button submitButton;
@FXML
private void initialize() {
firstNameError = new FieldError(firstNameErrorLabel);
lastNameError = new FieldError(lastNameErrorLabel);
thirdNameError = new FieldError(thirdNameErrorLabel);
emailError = new FieldError(emailErrorLabel);
passwordError = new FieldError(passwordErrorLabel);
emailField.textProperty().addListener((o, a, b) -> emailError.hide());
passwordField.textProperty().addListener((o, a, b) -> passwordError.hide());
}
@FXML
private void onSubmit(ActionEvent event) {
if (!isValid()) return;
User user =
authenticate(firstNameField.getText(), lastNameField.getText(), emailField.getText());
if (user == null) return;
session.setCurrentUser(user);
navigator.goTo("/fxml/Search.fxml");
}
private boolean isValid() {
return isFirstNameValid()
& isLastNameValid()
& isThirdNameValid()
& isEmailValid()
& isPasswordValid();
}
private boolean isFirstNameValid() {
return isFieldValid(firstNameField, new FirstNameValidator(), firstNameError);
}
private boolean isLastNameValid() {
return isFieldValid(lastNameField, new LastNameValidator(), lastNameError);
}
private boolean isThirdNameValid() {
return isFieldValid(thirdNameField, new ThirdNameValidator(), thirdNameError);
}
private boolean isEmailValid() {
return isFieldValid(emailField, new EmailValidator(), emailError);
}
private boolean isPasswordValid() {
return isFieldValid(passwordField, new PasswordValidator(), passwordError);
}
private boolean isFieldValid(TextField field, Validator validator, FieldError errorLabel) {
String input = field.getText();
var error = validator.isValid(input);
if (error == null) {
errorLabel.hide();
return true;
}
errorLabel.show(error);
return false;
}
private User authenticate(String firstName, String lastName, String email) {
return new User(UUID.randomUUID(), email, Role.USER, firstName, lastName, true);
}
}