Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -99,17 +99,6 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.synedra</groupId>
<artifactId>validatorfx</artifactId>
<version>0.6.1</version>
<exclusions>
<exclusion>
<groupId>org.openjfx</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.kordamp.bootstrapfx</groupId>
<artifactId>bootstrapfx-core</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,88 +3,89 @@
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.FieldErrorDecoration;
import com.DesktopApplicationClientJava.validation.utils.ErrorMessages;
import com.dlsc.formsfx.model.structure.Field;
import com.dlsc.formsfx.model.structure.Form;
import com.dlsc.formsfx.model.structure.PasswordField;
import com.dlsc.formsfx.model.structure.Section;
import com.dlsc.formsfx.model.structure.StringField;
import com.dlsc.formsfx.model.validators.Validator;
import com.dlsc.formsfx.view.renderer.FormRenderer;
import java.util.List;
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;
import net.synedra.validatorfx.Validator;
import javafx.scene.layout.VBox;

public class LoginFormController extends Controller {
private final Validator validator = new Validator();

@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 VBox formContainer;
@FXML private Button submitButton;

private StringField firstName;
private StringField lastName;
private StringField thirdName;
private StringField email;
private PasswordField password;
private Form loginForm;

@FXML
private void initialize() {
firstNameError = new FieldError(firstNameErrorLabel);
lastNameError = new FieldError(lastNameErrorLabel);
thirdNameError = new FieldError(thirdNameErrorLabel);
emailError = new FieldError(emailErrorLabel);
passwordError = new FieldError(passwordErrorLabel);

setupValidation();
}
firstName =
Field.ofStringType("")
.label(FirstNameValidator.FIELD_NAME)
.placeholder("Антон")
.required(ErrorMessages.Required)
.validate(toArray(FirstNameValidator.validators()));
lastName =
Field.ofStringType("")
.label(LastNameValidator.FIELD_NAME)
.placeholder("Антонов")
.required(ErrorMessages.Required)
.validate(toArray(LastNameValidator.validators()));
thirdName =
Field.ofStringType("")
.label(ThirdNameValidator.FIELD_NAME)
.placeholder("Антонович")
.required(ErrorMessages.Required)
.validate(toArray(ThirdNameValidator.validators()));
email =
Field.ofStringType("")
.label(EmailValidator.FIELD_NAME)
.placeholder("youremail@example.com")
.required(ErrorMessages.Required)
.validate(toArray(EmailValidator.validators()));
password =
Field.ofPasswordType("")
.label(PasswordValidator.FIELD_NAME)
.required(ErrorMessages.Required)
.validate(toArray(PasswordValidator.validators()));

private void setupValidation() {
FirstNameValidator.createCheck(validator, firstNameField.textProperty())
.decoratingWith(FieldErrorDecoration.forError(firstNameError))
.decorates(firstNameField)
.immediateClear();
LastNameValidator.createCheck(validator, lastNameField.textProperty())
.decoratingWith(FieldErrorDecoration.forError(lastNameError))
.decorates(lastNameField)
.immediateClear();
ThirdNameValidator.createCheck(validator, thirdNameField.textProperty())
.decoratingWith(FieldErrorDecoration.forError(thirdNameError))
.decorates(thirdNameField)
.immediateClear();
EmailValidator.createCheck(validator, emailField.textProperty())
.decoratingWith(FieldErrorDecoration.forError(emailError))
.decorates(emailField)
.immediateClear();
PasswordValidator.createCheck(validator, passwordField.textProperty())
.decoratingWith(FieldErrorDecoration.forError(passwordError))
.decorates(passwordField)
.immediateClear();
loginForm = Form.of(Section.of(firstName, lastName, thirdName, email, password));
formContainer.getChildren().add(new FormRenderer(loginForm));
}

@FXML
private void onSubmit(ActionEvent event) {
if (!validator.validate()) return;
boolean valid =
firstName.validate()
& lastName.validate()
& thirdName.validate()
& email.validate()
& password.validate();
if (!valid) {
return;
}

User user =
authenticate(firstNameField.getText(), lastNameField.getText(), emailField.getText());
if (user == null) return;
User user = authenticate(firstName.getValue(), lastName.getValue(), email.getValue());
if (user == null) {
return;
}

session.setCurrentUser(user);
navigator.goTo("/fxml/Search.fxml");
Expand All @@ -93,4 +94,9 @@ private void onSubmit(ActionEvent event) {
private User authenticate(String firstName, String lastName, String email) {
return new User(UUID.randomUUID(), email, Role.USER, firstName, lastName, true);
}

@SuppressWarnings("unchecked")
private static Validator<String>[] toArray(List<Validator<String>> validators) {
return validators.toArray(new Validator[0]);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

import com.DesktopApplicationClientJava.validation.utils.ErrorMessages;
import com.DesktopApplicationClientJava.validation.utils.ValidatorHelpers;
import javafx.beans.value.ObservableValue;
import net.synedra.validatorfx.Check;
import net.synedra.validatorfx.Validator;
import com.dlsc.formsfx.model.validators.CustomValidator;
import com.dlsc.formsfx.model.validators.StringLengthValidator;
import com.dlsc.formsfx.model.validators.Validator;
import java.util.List;

public final class EmailValidator {
public static final String FIELD_NAME = "Почта";
public static final int MIN_EMAIL_LENGTH = 5;
public static final int MAX_EMAIL_LENGTH = 100;
private static final String KEY = "value";

private EmailValidator() {}

Expand All @@ -24,14 +24,19 @@ public static String validate(String input) {
return null;
}

public static void check(Check.Context context) {
String error = validate(context.get(KEY));
if (error != null) {
context.error(error);
}
public static List<Validator<String>> validators() {
return List.of(
CustomValidator.forPredicate(
input -> !ValidatorHelpers.isEmpty(input), ErrorMessages.Required),
StringLengthValidator.atLeast(
MIN_EMAIL_LENGTH, ErrorMessages.MinLength(FIELD_NAME, MIN_EMAIL_LENGTH)),
StringLengthValidator.upTo(
MAX_EMAIL_LENGTH, ErrorMessages.MaxLength(FIELD_NAME, MAX_EMAIL_LENGTH)),
CustomValidator.forPredicate(
EmailValidator::hasValidFormat, ErrorMessages.IncorrectFormat));
}

public static Check createCheck(Validator validator, ObservableValue<String> property) {
return validator.createCheck().dependsOn(KEY, property).withMethod(EmailValidator::check);
private static boolean hasValidFormat(String input) {
return ValidatorHelpers.isEmpty(input) || ValidatorHelpers.includes(input, "@");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

import com.DesktopApplicationClientJava.validation.utils.ErrorMessages;
import com.DesktopApplicationClientJava.validation.utils.ValidatorHelpers;
import javafx.beans.value.ObservableValue;
import net.synedra.validatorfx.Check;
import net.synedra.validatorfx.Validator;
import com.dlsc.formsfx.model.validators.CustomValidator;
import com.dlsc.formsfx.model.validators.StringLengthValidator;
import com.dlsc.formsfx.model.validators.Validator;
import java.util.List;

public final class FirstNameValidator {
public static final String FIELD_NAME = "Имя";
private static final int MIN_LENGTH = 2;
private static final String KEY = "value";
public static final int MIN_LENGTH = 2;

private FirstNameValidator() {}

Expand All @@ -20,14 +20,10 @@ public static String validate(String input) {
return null;
}

public static void check(Check.Context context) {
String error = validate(context.get(KEY));
if (error != null) {
context.error(error);
}
}

public static Check createCheck(Validator validator, ObservableValue<String> property) {
return validator.createCheck().dependsOn(KEY, property).withMethod(FirstNameValidator::check);
public static List<Validator<String>> validators() {
return List.of(
CustomValidator.forPredicate(
input -> !ValidatorHelpers.isEmpty(input), ErrorMessages.Required),
StringLengthValidator.atLeast(MIN_LENGTH, ErrorMessages.MinLength(FIELD_NAME, MIN_LENGTH)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

import com.DesktopApplicationClientJava.validation.utils.ErrorMessages;
import com.DesktopApplicationClientJava.validation.utils.ValidatorHelpers;
import javafx.beans.value.ObservableValue;
import net.synedra.validatorfx.Check;
import net.synedra.validatorfx.Validator;
import com.dlsc.formsfx.model.validators.CustomValidator;
import com.dlsc.formsfx.model.validators.StringLengthValidator;
import com.dlsc.formsfx.model.validators.Validator;
import java.util.List;

public final class LastNameValidator {
public static final String FIELD_NAME = "Фамилия";
public static final int MIN_LENGTH = 2;
private static final String KEY = "value";

private LastNameValidator() {}

Expand All @@ -20,14 +20,10 @@ public static String validate(String input) {
return null;
}

public static Check createCheck(Validator validator, ObservableValue<String> property) {
return validator.createCheck().dependsOn(KEY, property).withMethod(LastNameValidator::check);
}

public static void check(Check.Context context) {
String error = validate(context.get(KEY));
if (error != null) {
context.error(error);
}
public static List<Validator<String>> validators() {
return List.of(
CustomValidator.forPredicate(
input -> !ValidatorHelpers.isEmpty(input), ErrorMessages.Required),
StringLengthValidator.atLeast(MIN_LENGTH, ErrorMessages.MinLength(FIELD_NAME, MIN_LENGTH)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

import com.DesktopApplicationClientJava.validation.utils.ErrorMessages;
import com.DesktopApplicationClientJava.validation.utils.ValidatorHelpers;
import javafx.beans.value.ObservableValue;
import net.synedra.validatorfx.Check;
import net.synedra.validatorfx.Validator;
import com.dlsc.formsfx.model.validators.CustomValidator;
import com.dlsc.formsfx.model.validators.StringLengthValidator;
import com.dlsc.formsfx.model.validators.Validator;
import java.util.List;

public final class PasswordValidator {
public static final String FIELD_NAME = "Пароль";
public static final int MIN_LENGTH = 8;
public static final int MAX_LENGTH = 64;
private static final String KEY = "value";

private PasswordValidator() {}

Expand All @@ -23,14 +23,11 @@ public static String validate(String input) {
return null;
}

public static void check(Check.Context context) {
String error = validate(context.get(KEY));
if (error != null) {
context.error(error);
}
}

public static Check createCheck(Validator validator, ObservableValue<String> property) {
return validator.createCheck().dependsOn(KEY, property).withMethod(PasswordValidator::check);
public static List<Validator<String>> validators() {
return List.of(
CustomValidator.forPredicate(
input -> !ValidatorHelpers.isEmpty(input), ErrorMessages.Required),
StringLengthValidator.atLeast(MIN_LENGTH, ErrorMessages.MinLength(FIELD_NAME, MIN_LENGTH)),
StringLengthValidator.upTo(MAX_LENGTH, ErrorMessages.MaxLength(FIELD_NAME, MAX_LENGTH)));
}
}
Loading
Loading