BAEL-2990 Automatic generation of the Builder pattern with FreeBuilder
This commit is contained in:
parent
b32a91a8ff
commit
97e38d338f
@ -41,6 +41,8 @@ public interface Employee {
|
|||||||
|
|
||||||
Map<String, Long> getAssetsSerialIdMapping();
|
Map<String, Long> getAssetsSerialIdMapping();
|
||||||
|
|
||||||
|
Optional<Double> getSalaryInUSD();
|
||||||
|
|
||||||
|
|
||||||
class Builder extends Employee_Builder {
|
class Builder extends Employee_Builder {
|
||||||
|
|
||||||
|
@ -2,61 +2,16 @@ package com.baeldung.freebuilder.builder.classic;
|
|||||||
|
|
||||||
public class Employee {
|
public class Employee {
|
||||||
|
|
||||||
private String name;
|
private final String name;
|
||||||
private int age;
|
private final int age;
|
||||||
private String department;
|
private final String department;
|
||||||
private String role;
|
|
||||||
private String supervisorName;
|
|
||||||
private String designation;
|
|
||||||
private String email;
|
|
||||||
private long phoneNumber;
|
|
||||||
private boolean isPermanent;
|
|
||||||
private Address address;
|
|
||||||
|
|
||||||
private Employee() {
|
private Employee(String name, int age, String department) {
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setName(String name) {
|
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
|
||||||
|
|
||||||
private void setAge(int age) {
|
|
||||||
this.age = age;
|
this.age = age;
|
||||||
}
|
|
||||||
|
|
||||||
private void setDepartment(String department) {
|
|
||||||
this.department = department;
|
this.department = department;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setRole(String role) {
|
|
||||||
this.role = role;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setSupervisorName(String supervisorName) {
|
|
||||||
this.supervisorName = supervisorName;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setDesignation(String designation) {
|
|
||||||
this.designation = designation;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setEmail(String email) {
|
|
||||||
this.email = email;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setPhoneNumber(long phoneNumber) {
|
|
||||||
this.phoneNumber = phoneNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setPermanent(boolean permanent) {
|
|
||||||
isPermanent = permanent;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setAddress(Address address) {
|
|
||||||
this.address = address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
@ -69,46 +24,11 @@ public class Employee {
|
|||||||
return department;
|
return department;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRole() {
|
|
||||||
return role;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSupervisorName() {
|
|
||||||
return supervisorName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDesignation() {
|
|
||||||
return designation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmail() {
|
|
||||||
return email;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getPhoneNumber() {
|
|
||||||
return phoneNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isPermanent() {
|
|
||||||
return isPermanent;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Address getAddress() {
|
|
||||||
return address;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private int age;
|
private int age;
|
||||||
private String department;
|
private String department;
|
||||||
private String role;
|
|
||||||
private String supervisorName;
|
|
||||||
private String designation;
|
|
||||||
private String email;
|
|
||||||
private long phoneNumber;
|
|
||||||
private boolean isPermanent;
|
|
||||||
private Address address;
|
|
||||||
|
|
||||||
public Builder setName(String name) {
|
public Builder setName(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
@ -125,56 +45,8 @@ public class Employee {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder setRole(String role) {
|
|
||||||
this.role = role;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setSupervisorName(String supervisorName) {
|
|
||||||
this.supervisorName = supervisorName;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setDesignation(String designation) {
|
|
||||||
this.designation = designation;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setEmail(String email) {
|
|
||||||
this.email = email;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setPhoneNumber(long phoneNumber) {
|
|
||||||
this.phoneNumber = phoneNumber;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setPermanent(boolean permanent) {
|
|
||||||
isPermanent = permanent;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder setAddress(Address address) {
|
|
||||||
this.address = address;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Employee build() {
|
public Employee build() {
|
||||||
Employee employee = new Employee();
|
return new Employee(name, age, department);
|
||||||
employee.setName(this.name);
|
|
||||||
employee.setAge(this.age);
|
|
||||||
employee.setDepartment(this.department);
|
|
||||||
employee.setAddress(this.address);
|
|
||||||
employee.setDesignation(this.designation);
|
|
||||||
employee.setEmail(this.email);
|
|
||||||
employee.setPermanent(this.isPermanent);
|
|
||||||
employee.setName(this.name);
|
|
||||||
employee.setSupervisorName(this.supervisorName);
|
|
||||||
employee.setPhoneNumber(this.phoneNumber);
|
|
||||||
|
|
||||||
return employee;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,8 @@ public class EmployeeBuilderUnitTest {
|
|||||||
|
|
||||||
private static final int PIN_CODE = 223344;
|
private static final int PIN_CODE = 223344;
|
||||||
public static final String CITY_NAME = "New York";
|
public static final String CITY_NAME = "New York";
|
||||||
|
public static final int INPUT_SALARY_EUROS = 10000;
|
||||||
|
public static final double EUROS_TO_USD_RATIO = 0.6;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBuildEmployeeWithAddress_thenReturnEmployeeWithValidAddress() {
|
public void whenBuildEmployeeWithAddress_thenReturnEmployeeWithValidAddress() {
|
||||||
@ -33,15 +35,27 @@ public class EmployeeBuilderUnitTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenMapPincodeInAddress_thenReturnEmployeeWithValidAddressPincode() {
|
public void whenMapSalary_thenReturnEmployeeWithSalaryInUSD() {
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Address.Builder addressBuilder = new Address.Builder();
|
Address.Builder addressBuilder = new Address.Builder();
|
||||||
Address address = addressBuilder.setCity(CITY_NAME).setPinCode(PIN_CODE).build();
|
Address address = addressBuilder.setCity(CITY_NAME).setPinCode(PIN_CODE).build();
|
||||||
|
|
||||||
|
long salaryInEuros = INPUT_SALARY_EUROS;
|
||||||
Employee.Builder builder = new Employee.Builder();
|
Employee.Builder builder = new Employee.Builder();
|
||||||
|
|
||||||
Employee employee = builder.setName("baeldung").setAge(10).setDesignation("author").setEmail("abc@xyz.com").setSupervisorName("Admin").setPhoneNumber(4445566).setPermanent(true).setRole("developer").setAddress(address).build();
|
Employee employee = builder
|
||||||
|
.setName("baeldung")
|
||||||
|
.setAge(10)
|
||||||
|
.setDesignation("author")
|
||||||
|
.setEmail("abc@xyz.com")
|
||||||
|
.setSupervisorName("Admin")
|
||||||
|
.setPhoneNumber(4445566)
|
||||||
|
.setPermanent(true)
|
||||||
|
.setRole("developer")
|
||||||
|
.setAddress(address)
|
||||||
|
.mapSalaryInUSD(sal -> salaryInEuros * EUROS_TO_USD_RATIO)
|
||||||
|
.build();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertTrue(employee.getAddress().getPinCode().get() == PIN_CODE);
|
assertTrue(employee.getAddress().getPinCode().get() == PIN_CODE);
|
||||||
|
@ -18,11 +18,6 @@ class EmployeeBuilderUnitTest {
|
|||||||
.setName(NAME)
|
.setName(NAME)
|
||||||
.setAge(12)
|
.setAge(12)
|
||||||
.setDepartment("Builder Pattern")
|
.setDepartment("Builder Pattern")
|
||||||
.setDesignation("Author")
|
|
||||||
.setEmail("abc@xyz.com")
|
|
||||||
.setPermanent(true)
|
|
||||||
.setSupervisorName("Admin")
|
|
||||||
.setPhoneNumber(4445566)
|
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
//then
|
//then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user