...
/Refactor the Edit User Implementation
Refactor the Edit User Implementation
Enhance the edit user implementation by refactoring.
We'll cover the following...
Extracting fields
To avoid having to enter the user’s password when editing user details, we’ll do a small refactor. We’ll start by creating an abstract super class with CreateUserFormData
extracting most fields except for password
and passwordRepeated
:
Press + to interact
package com.tamingthymeleaf.application.user.web;import com.tamingthymeleaf.application.infrastructure.validation.ValidationGroupOne;import com.tamingthymeleaf.application.infrastructure.validation.ValidationGroupTwo;import com.tamingthymeleaf.application.user.Gender;import com.tamingthymeleaf.application.user.UserRole;import org.springframework.format.annotation.DateTimeFormat;import javax.validation.constraints.*;import java.time.LocalDate;@NotExistingUser(groups = ValidationGroupTwo.class)public class AbstractUserFormData {@NotNullprivate UserRole userRole; //<.>@NotBlank@Size(min = 1, max = 200, groups = ValidationGroupOne.class)private String firstName;@NotBlank@Size(min = 1, max = 200, groups = ValidationGroupOne.class)private String lastName;@NotNullprivate Gender gender;@NotBlank@Email(groups = ValidationGroupOne.class)private String email;@NotNull@DateTimeFormat(pattern = "yyyy-MM-dd")private LocalDate birthday;@NotBlank@Pattern(regexp = "[0-9.\\-() x/+]+", groups = ValidationGroupOne.class)private String phoneNumber;public UserRole getUserRole() {return userRole;}public void setUserRole(UserRole userRole) {this.userRole = userRole;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public Gender getGender() {return gender;}public void setGender(Gender gender) {this.gender = gender;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public LocalDate getBirthday() {return birthday;}public void setBirthday(LocalDate birthday) {this.birthday = birthday;}public String getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}}
We’ll keep password
and passwordRepeated
fields on ...